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.
- License the capabilities you included in the app. Refer to the License levels and capabilities topic to determine the license level you require, and to the Get a license topic to learn how to acquire a license.
- Attribute Esri in your app.
- If you deploy content or services from ArcGIS location services, see the FAQ topic in the Mapping and location services guide.
- Learn about Defining ArcGIS components to deploy, Deploying specialized symbols, and Deploying to the Apple App Store using MFi accessories.
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.
-
WPF: When building applications with the WPF application platform, ArcGIS Maps SDK for .NET supports multiple .NET runtimes: .NET Framework 4.7.2 (or higher) and .NET 8. Learn more about .NET application publishing or how to deploy a WPF application on .NET Framework in the Microsoft documentation.
-
WinUI: Learn more about Deployment architecture for the Windows App SDK in the Microsoft documentation. For instructions on publishing a .NET MAUI Windows App, refer to the publishing guide in the Microsoft documentation.
-
UWP: Learn more about Packaging UWP apps in the Microsoft docs.
-
.NET Android: Learn more about .NET Android publishing and deployment in the Microsoft documentation.
-
.NET iOS: Learn more about .NET iOS publishing and deployment in the Microsoft documentation.
-
macOS:: Learn more about publishing a .NET MAUI app for macOS in the Microsoft documentation.
-
.NET MAUI: Learn more about deploying .NET MAUI apps for various supported platforms in the Microsoft documentation.
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)
<Out
Dir >\publish\ Esri. ArcGIS Runtime.dll <Out
orDir >\publish\ Esri. ArcGIS Runtime. WP F.dll <Out
Dir >\publish\ Esri. ArcGIS Runtime. Win U I.dll <Out
Dir >\publish\runtimecore.dll <Out
Dir >\publish\runtimecore Assembly.manifest <Out
Dir >\publish\ Runtime Core Net200 _0.dll <Out
orDir >\publish\ Runtime Core Net200 _0. WP F.dll <Out
Dir >\publish\ Runtime Core Net. Win U I.dll <Out
Dir >\publish\ ArcGIS Runtime200.0 resources\shaders\*.*
resources\network
_analyst\strings.bin
Example Portable runtime identifier publish output
<Out
Dir >\publish\ Esri. ArcGIS Runtime.dll <Out
orDir >\publish\ Esri. ArcGIS Runtime. WP F.dll <Out
Dir >\publish\ Esri. ArcGIS Runtime. Win U I.dll <Out
Dir >\publish\runtimes\win10-x64\native\runtimecore.dll <Out
Dir >\publish\runtimes\win10-x64\native\runtimecore Assembly.manifest <Out
Dir >\publish\runtimes\win10-x64\native\ Runtime Core Net200 _0.dll <Out
orDir >\publish\runtimes\win10-x64\native\ Runtime Core Net200 _0. WP F.dll <Out
Dir >\publish\runtimes\win10-x64\native\ Runtime Core Net. Win U I.dll <Out
Dir >\publish\runtimes\win10-x86\native\runtimecore.dll <Out
Dir >\publish\runtimes\win10-x86\native\runtimecore Assembly.manifest <Out
Dir >\publish\runtimes\win10-x86\native\ Runtime Core Net200 _0.dll <Out
orDir >\publish\runtimes\win10-x86\native\ Runtime Core Net200 _0. WP F.dll <Out
Dir >\publish\runtimes\win10-x86\native\ Runtime Core Net. Win U I.dll <Out
Dir >\publish\ ArcGIS Runtime200.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 Any
, 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 Any
, the ArcGIS native components will be copied to subdirectories named client32
and client64
under the ArcGIS
directory in the project output location.
Example architecture-specific build output (x86 or x64)
<Out
Dir >\ Esri. ArcGIS Runtime.dll <Out
Dir >\ Esri. ArcGIS Runtime. WP F.dll <Out
Dir >\runtimecore.dll <Out
Dir >\runtimecore Assembly.manifest <Out
Dir >\ Runtime Core Net200 _0.dll <Out
Dir >\ Runtime Core Net200 _0. WP F.dll <Out
Dir >\ ArcGIS Runtime200 _0 resources\shaders\*.*
resources\network
_analyst\strings.bin
Example AnyCPU build output
<Out
Dir >\ Esri. ArcGIS Runtime.dll <Out
Dir >\ Esri. ArcGIS Runtime. WP F.dll <Out
Dir >\ ArcGIS Runtime200.0\ client32\runtimecore.dll
client32\runtimecore
Assembly.manifest client32\
Runtime Core Net200 _0.dll client32\
Runtime Core Net200 _0. WP F.dll client64\runtimecore.dll
client64\runtimecore
Assembly.manifest client64\
Runtime Core Net200 _0.dll client64\
Runtime Core Net200 _0. WP F.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 (ArcGIS
). 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.
- You can download the Military Dictionary Symbol Styles that Esri hosts in ArcGIS Online and include them in your app deployment. You will need to add logic in your app to locate and use the 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.
, 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.Net. Http. Http 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 ArcGIS
deployment directory in a subdirectory named network
, for example <Out
. If your application does not include these capabilities (functionality in the Esri.
or Esri.
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: <Deploy
.
Export compliance and restrictions on cryptography
When you submit your app to an app store (such as Apple's App Store, Google Play Store, or the Microsoft Apps store) your app may be stored on a server in the United States and is therefore subject to US export laws, regardless of where you or your organization are based. The Bureau of Industry and Security, under the United States Department of Commerce, regulates the export of technology that uses encryption. In some cases, the use of encryption may be considered an export of encryption software, subjecting your app to US export compliance requirements. Because the ArcGIS Maps SDK for .NET uses encryption libraries provided by the underlying operating system, it does not require the declaration of non-exempt encryption when submitted as part of your app. This includes .NET Maps SDK libraries that support reading secure Electronic Navigational Chart (ENC) datasets.
It is the responsibility of the app developer (and publisher) to make sure that an app complies with all applicable laws and regulations.
The following links provide more information about US export compliance and restrictions on cryptography:
- Export Administration Regulations (EAR)
- Apple Developer: Complying with Encryption Export Regulations
- Google Play: US export compliance
- Microsoft: Export restrictions on cryptography
Apple privacy manifest
Starting May 1, 2025, Apple is introducing a privacy policy for including privacy manifest files in new and updated applications targeted for iOS, iPadOS, and tvOS platforms on the App Store. Note that macOS apps are currently excluded from this policy.
The .NET MAUI project template for Maps SDK for .NET includes a privacy manifest. As an app developer, you should identify APIs that you are using in your own code as well as entries coming from third-party libraries and frameworks and make the appropriate updates to the privacy info. To learn more about how to add privacy info to your app, please refer to the Apple privacy manifest discussion in the Microsoft documentation.
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.