Deployment

ArcGIS Maps SDK for .NET enables you to build mapping applications for Android, iOS, and Windows. Follow the steps below to ensure you have licensed the capabilities that your app uses and that you understand associated costs.

Applications built with ArcGIS Maps SDK for .NET require that a set of ArcGIS components be included with the application deployment to enable functionality at runtime.

Attribute Esri in your app

Esri requires that when you use an ArcGIS Online basemap, Esri data services, or Esri API technology in your app, you must also include Esri attribution. There are specific requirements for attribution that you may be required to address in your app depending on how your app is built and the data it uses. These requirements are outlined in detail in the Attribution in your app topic.

Define ArcGIS components to deploy

The ArcGIS Maps SDK for .NET NuGet package logic will detect the target platform architecture(s) of your application and copy the appropriate architecture(s) of ArcGIS components to the build output location or publish location.

Runtime DLLs and resources for WPF apps

When building applications with WPF, ArcGIS Maps SDK for .NET supports multiple .NET runtimes: .NET Framework 4.7.2 (or higher) and .NET 8. The required ArcGIS components will be copied to the build output or publish locations according to the target .NET runtime and platform architecture(s) of your project.

WPF or WinUI targeting .NET 8

Applications you create with WPF or WinUI targeting .NET 8 can be published as profiles with architecture-specific runtime identifiers (win10-x86 or win10-x64) or using the Portable runtime identifier to include both win10-x86 and win10-x64 native libraries. If publishing with an architecture-specific runtime identifier, for example win10-x64, the required ArcGIS native components will be included at the root level of the output folder. If publishing with the Portable runtime identifier, the ArcGIS native components will be copied to subdirectories under the runtimes directory in the project build output location: runtimes\win10-x64\native and runtimes\win10-x86\native.

Example architecture-specific publish output (win10-x86 or win10-x64)

  • <OutDir>\publish\Esri.ArcGISRuntime.dll
  • <OutDir>\publish\Esri.ArcGISRuntime.WPF.dll or <OutDir>\publish\Esri.ArcGISRuntime.WinUI.dll
  • <OutDir>\publish\runtimecore.dll
  • <OutDir>\publish\runtimecoreAssembly.manifest
  • <OutDir>\publish\RuntimeCoreNet200_0.dll
  • <OutDir>\publish\RuntimeCoreNet200_0.WPF.dll or <OutDir>\publish\RuntimeCoreNet.WinUI.dll
  • <OutDir>\publish\ArcGISRuntime200.0
    • resources\shaders\*.*
    • resources\network_analyst\strings.bin

Example Portable runtime identifier publish output

  • <OutDir>\publish\Esri.ArcGISRuntime.dll
  • <OutDir>\publish\Esri.ArcGISRuntime.WPF.dll or <OutDir>\publish\Esri.ArcGISRuntime.WinUI.dll
  • <OutDir>\publish\runtimes\win10-x64\native\runtimecore.dll
  • <OutDir>\publish\runtimes\win10-x64\native\runtimecoreAssembly.manifest
  • <OutDir>\publish\runtimes\win10-x64\native\RuntimeCoreNet200_0.dll
  • <OutDir>\publish\runtimes\win10-x64\native\RuntimeCoreNet200_0.WPF.dll or <OutDir>\publish\runtimes\win10-x64\native\RuntimeCoreNet.WinUI.dll
  • <OutDir>\publish\runtimes\win10-x86\native\runtimecore.dll
  • <OutDir>\publish\runtimes\win10-x86\native\runtimecoreAssembly.manifest
  • <OutDir>\publish\runtimes\win10-x86\native\RuntimeCoreNet200_0.dll
  • <OutDir>\publish\runtimes\win10-x86\native\RuntimeCoreNet200_0.WPF.dll or <OutDir>\publish\runtimes\win10-x86\native\RuntimeCoreNet.WinUI.dll
  • <OutDir>\publish\ArcGISRuntime200.0\
    • resources\shaders\*.*
    • resources\network_analyst\strings.bin

WPF targeting .NET Framework 4.7.2 (or higher)

Applications you create with WPF on the .NET Framework can be architecture-specific (x86 or x64) or AnyCPU, which includes both x86 and x64 native components. If targeting a single architecture, the required ArcGIS native components will be included at the root level of the output directory. If building as AnyCPU, the ArcGIS native components will be copied to subdirectories named client32 and client64 under the ArcGISRuntime200.x directory in the project output location.

Example architecture-specific build output (x86 or x64)

  • <OutDir>\Esri.ArcGISRuntime.dll
  • <OutDir>\Esri.ArcGISRuntime.WPF.dll
  • <OutDir>\runtimecore.dll
  • <OutDir>\runtimecoreAssembly.manifest
  • <OutDir>\RuntimeCoreNet200_0.dll
  • <OutDir>\RuntimeCoreNet200_0.WPF.dll
  • <OutDir>\ArcGISRuntime200_0
    • resources\shaders\*.*
    • resources\network_analyst\strings.bin

Example AnyCPU build output

  • <OutDir>\Esri.ArcGISRuntime.dll
  • <OutDir>\Esri.ArcGISRuntime.WPF.dll
  • <OutDir>\ArcGISRuntime200.0\
    • client32\runtimecore.dll
    • client32\runtimecoreAssembly.manifest
    • client32\RuntimeCoreNet200_0.dll
    • client32\RuntimeCoreNet200_0.WPF.dll
    • client64\runtimecore.dll
    • client64\runtimecoreAssembly.manifest
    • client64\RuntimeCoreNet200_0.dll
    • client64\RuntimeCoreNet200_0.WPF.dll
    • resources\shaders\*.*
    • resources\network_analyst\strings.bin

ArcGIS Maps SDK for Local Server

If your Windows desktop application project uses the Local Server component, you configure the subset of Local Server components to include with your application deployment using an XML-based deployment manifest file (ArcGISLocalServer.AGSDeployment). See the Build a Local Server deployment topic more information about deploying Local Server for your Windows desktop applications.

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 Maps SDK for .NET. 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, reading their contents, and storing them locally. The following code example shows how to access some of the hosted military symbol items.
Use dark colors for code blocksCopy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
// Get the ArcGIS Online portal (default if no URI is provided)
ArcGISPortal arcGISOnline = await ArcGISPortal.CreateAsync();

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

// Read the data from the items
Stream dataMil2525c = await itemMil2525c.GetDataAsync();
Stream dataMil2525d = await itemMil2525d.GetDataAsync();

// Read the data and write it to a local file ...
using (FileStream outFileStream = new FileStream(outMil2525cDataPath, FileMode.Create))
{
    dataMil2525c.CopyTo(outFileStream);
    outFileStream.Flush();
}

using (FileStream outFileStream = new FileStream(outMil2525dDataPath, FileMode.Create))
{
    dataMil2525d.CopyTo(outFileStream);
    outFileStream.Flush();
}

ArcGIS Network Analyst resources deployment

The resources required to support ArcGIS Network Analyst capabilities such as routing and navigation are included by default in the ArcGISRuntime200.x\resources deployment directory in a subdirectory named network_analyst, for example <OutDir>\ArcGISRuntime200.0\resources\network_analyst\strings.bin. If your application does not include these capabilities (functionality in the Esri.ArcGISRuntime.Tasks.NetworkAnalysis or Esri.ArcGISRuntime.Navigation namespaces), you can reduce the size of the ArcGIS Runtime deployment by excluding the resource file. To skip deploying the resource file, add the following property to your project file: <DeployArcGISNetworkAnalystResources>false</DeployArcGISNetworkAnalystResources>.

Deploying to the Apple App Store using MFi accessories

The Apple AppStore has guidelines and restrictions for apps that communicate with MFi accessories (for example an external GPS receiver). Apps that use NMEA data need to satisfy the Apple requirements to be accepted in the store. Apps need to declare support via PPID in their submission and the MFi provider needs to list the bundle ID so Apple can cross-reference it. For more information see Apple's MFi Program site.

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.