Deployment

Apps built with ArcGIS Runtime SDK for .NET require an ArcGIS Runtime deployment. The ArcGIS Runtime deployment contains the minimum set of ArcGIS Runtime components required to support the functionality in your app, from rendering maps to performing complex GIS analysis. Likewise, excluding unneeded components produces focused apps with a smaller footprint, containing only the capabilities you need.

Define ArcGIS Runtime components to deploy

An ArcGIS Runtime deployment is created for you automatically when you build your project.

An ArcGIS Runtime deployment is required for every target platform for your app. The ArcGIS Runtime NuGet packages will automatically detect the build target for the project and build an ArcGIS Runtime deployment with the appropriate architecture.

  • WPF: If your project uses ArcGIS Runtime Local Server, an XML-based manifest file (ArcGISLocalServer.AGSDeployment) is used to manually configure Local Server components needed for your deployment. See the Create a Local Server deployment topic more information about deploying Local Server for your WPF app. Consult the Microsoft documentation for more information about .NET Core application publishing, Building an MSIX package from your code, and how to Deploy a WPF Application.
  • UWP: Visual Studio can help you create a package for your UWP app that includes the app and all the resources it needs. Learn more about Packaging in the Microsoft docs.
  • Xamarin.Android: The Xamarin.Android build process puts everything together and generates an .apk for execution on Android devices. Learn more about the Android build process in the Microsoft docs. -Xamarin.iOS: Learn more about Xamarin iOS app distribution in the Microsoft docs. -Xamarin.Forms: Create a deployment for all platforms supported by your Xamarin Forms app. See the Xamarin Forms Deploy and test topic in the Microsoft docs for details.

Runtime DLLs and resources for WPF apps

The ArcGIS Runtime NuGet package(s) you add to your project will deploy the necessary runtime components according to your build configuration. The location of these files in the output will vary according to the current build configuration and platform.

For example, if you're building a .NET Framework WPF project for Any CPU, ArcGIS Runtime core DLLs will be created in directories called client32 and client64. These directories appear under a folder called ArcGISRuntime100.x in the project output.

Deployment folder for a .NET Framework WPF app built for Any CPU

The same Any CPU build for a .NET Core WPF project will output these files slightly differently. ArcGIS Runtime resources will still appear under a folder called ArcGISRuntime100.x, but the ArcGIS Runtime native DLLs will be in a runtimes subfolder as shown in the following example. For all builds, the managed ArcGIS Runtime assemblies appear in the same output folder as the app executable.

Deployment folder for a .NET Core WPF app built for Any CPU

If you build your app specifically for x86 or x64, the native DLLs will be placed in the same folder as your app's executable rather than in a separate folder. You will still have an ArcGISRuntime100.x folder to contain required resources.

Output for a 64-bit build of a .NET Core WPF app

Deploying specialized symbols

You may need to deploy specialized symbols, such as military symbol dictionaries, for use with your ArcGIS Runtime app.

You have two options for including these symbols in your deployment.

  1. The ArcGIS for Defense group hosts the following ArcGIS Online items that contain .stylx files with military symbols. Use the support matrix to find and download the supported stylx file for your version of ArcGIS Runtime SDK. Once downloaded, you can include the files in your app deployment. Logic in your app, of course, would be required to locate and use the included files as needed.
  2. Add logic to your app that prepares the app for offline use by downloading the files and storing them locally. You can access these resources when your user is online either by programmatically downloading them (using System.Net.Http.HttpClient, for example) or accessing them as portal items using the ArcGIS Runtime API, reading their contents, and storing them locally. The following example shows how to access some of the hosted military symbol items using ArcGIS Runtime code.
            
// Get the ArcGIS Online portal (default if no URI is provided)
ArcGISPortal agol = await ArcGISPortal.CreateAsync();

// Get the military symbol items (use their unique item IDs)
PortalItem itemMil2525c = await PortalItem.CreateAsync(agol, "ef95f95470db437f80ea764a9d05203b");
PortalItem itemMilStd2525d = await PortalItem.CreateAsync(agol, "c78b149a1d52414682c86a5feeb13d30");

// Read the data from the items
var dataMil2525c = await itemMil2525c.GetDataAsync();
var dataMilStd2525d = await itemMilStd2525d.GetDataAsync();

// ... Code here to read the data and write it to a local file ...