Applications built with ArcGIS Runtime API for .NET require a set of ArcGIS Runtime components to be included with the application deployment to enable functionality at runtime.
Define ArcGIS Runtime components to deploy
The ArcGIS Runtime API for .NET NuGet package logic will automatically detect the target platform architecture(s) of your application and copy the appropriate architecture(s) of ArcGIS Runtime component to the build output location or publish location.
- WPF: When building applications with the WPF application platform, ArcGIS Runtime API for .NET supports multiple .NET runtimes: .NET Framework 4.x and .NET 6. Learn more about .NET application publishing or how to deploy a WPF application on .NET Framework in the Microsoft docs.
- WinUI: Learn more about Deployment architecture for the Windows App SDK in the Microsoft docs.
- UWP: Learn more about Packaging UWP apps in the Microsoft docs.
- Xamarin.Android: The Xamarin.Android build process assembles the required components 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. Learn more about deploying Xamarin Forms apps Deploy and test in the Microsoft docs.
Runtime DLLs and resources for WPF apps
When building applications with WPF, ArcGIS Runtime API for .NET supports multiple .NET runtimes: .NET Framework 4.x and .NET 6. 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 6
Applications you create with WPF or WinUI targeting .NET 6 can be published as profiles with architecture-specific runtime identifiers (win-x86 or win-x64) or using the Portable runtime identifier to include both win-x86 and win-x64 native libraries. If publishing with an architecture-specific runtime identifier, for example win-x64
, the required ArcGIS Runtime native components will be included at the root level of the output folder. If publishing with the Portable
runtime identifier, the ArcGIS Runtime native components will be copied to subdirectories under the runtimes
directory in the project build output location: runtimes\win-x64\native
and runtimes\win-x86\native
.
Example architecture-specific publish output (win-x86 or win-x64)
<
O u t D i r> \publish\Esri.ArcGISRuntime.dll <
orO u t D i r> \publish\Esri.ArcGISRuntime.WPF.dll <
O u t D i r> \publish\Esri.ArcGISRuntime.Win UI.dll <
O u t D i r> \publish\runtimecore.dll <
O u t D i r> \publish\runtimecore Assembly.manifest <
O u t D i r> \publish\Runtime Core Net100_13.dll <
orO u t D i r> \publish\Runtime Core Net100_13.WPF.dll <
O u t D i r> \publish\Runtime Core Net.Win UI.dll <
O u t D i r> \publish\ArcGISRuntime100.13 resources\shaders\*.*
resources\network_
analyst\strings.bin
Example Portable runtime identifier publish output
<
O u t D i r> \publish\Esri.ArcGISRuntime.dll <
orO u t D i r> \publish\Esri.ArcGISRuntime.WPF.dll <
O u t D i r> \publish\Esri.ArcGISRuntime.Win UI.dll <
O u t D i r> \publish\runtimes\win-x64\native\runtimecore.dll <
O u t D i r> \publish\runtimes\win-x64\native\runtimecore Assembly.manifest <
O u t D i r> \publish\runtimes\win-x64\native\Runtime Core Net100_11.dll <
orO u t D i r> \publish\runtimes\win-x64\native\Runtime Core Net100_11.WPF.dll <
O u t D i r> \publish\runtimes\win-x64\native\Runtime Core Net.Win UI.dll <
O u t D i r> \publish\runtimes\win-x86\native\runtimecore.dll <
O u t D i r> \publish\runtimes\win-x86\native\runtimecore Assembly.manifest <
O u t D i r> \publish\runtimes\win-x86\native\Runtime Core Net100_11.dll <
orO u t D i r> \publish\runtimes\win-x86\native\Runtime Core Net100_11.WPF.dll <
O u t D i r> \publish\runtimes\win-x86\native\Runtime Core Net.Win UI.dll <
O u t D i r> \publish\ArcGISRuntime100.13\ resources\shaders\*.*
resources\network_
analyst\strings.bin
WPF targeting .NET Framework 4.x
Applications you create with WPF on the .NET Framework can be architecture-specific (x86
or x64
) or Any
, which includes both x86
and x64
native components. If targeting a single architecture, the required ArcGIS Runtime native components will be included at the root level of the output directory. If building as Any
, the ArcGIS Runtime native components will be copied to subdirectories named client32
and client64
under the ArcGISRuntime100.x
directory in the project output location.
Example architecture-specific build output (x86 or x64)
<
O u t D i r> \Esri.ArcGISRuntime.dll <
O u t D i r> \Esri.ArcGISRuntime.WPF.dll <
O u t D i r> \runtimecore.dll <
O u t D i r> \runtimecore Assembly.manifest <
O u t D i r> \Runtime Core Net100_13.dll <
O u t D i r> \Runtime Core Net100_13.WPF.dll <
O u t D i r> \ArcGISRuntime100.13 resources\shaders\*.*
resources\network_
analyst\strings.bin
Example AnyCPU build output
<
O u t D i r> \Esri.ArcGISRuntime.dll <
O u t D i r> \Esri.ArcGISRuntime.WPF.dll <
O u t D i r> \ArcGISRuntime100.13\ client32\runtimecore.dll
client32\runtimecore
Assembly.manifest client32\Runtime
Core Net100_13.dll client32\Runtime
Core Net100_13.WPF.dll client64\runtimecore.dll
client64\runtimecore
Assembly.manifest client64\Runtime
Core Net100_13.dll client64\Runtime
Core Net100_13.WPF.dll resources\shaders\*.*
resources\network_
analyst\strings.bin
ArcGIS Runtime Local Server
If your Windows desktop application project uses the ArcGIS Runtime Local Server component, you configure the subset of Local Server components to include with your application deployment using an XML-based deployment manifest file (ArcGISLocal
). See the Create 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.
- 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.
- 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.Http
, 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.Client
// 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 ArcGISRuntime100.x\resources
deployment directory in a subdirectory named network_
, for example <
. If your application does not include these capabilities (functionality in the Esri.ArcGISRuntime.Tasks.Network
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: <
.
Deploying to the Apple AppStore 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.