We are pleased to announce the 100.10 release of ArcGIS Runtime SDK for .NET. This release includes significant new features, enhancements to existing features, performance improvements, bug fixes, and even a preview of what we have on the roadmap. You can read about the highlights common to all ArcGIS Runtime SDKs in the shared ArcGIS Runtime blog post and additional details in the 100.10 Release Notes.
For you - our .NET community - here are several more details we would like to highlight...
API : Nullability
Nullable reference types are now supported. This release concludes the multi-release epic to incrementally annotate the ArcGIS Runtime SDK for .NET codebase for Nullable reference types. Nullability was introduced with the C# language version 8.0 and enables you to explicitly declare in your code when a reference may be null and when it will never be null, with the goal of avoiding a NullReferenceException at runtime. Now that we have annotated the ArcGIS Runtime API for .NET codebase, you can enable compile-time warnings that will help to show you where you may have missed implementing a null check which could later cause a crash while users are running your app. If your project uses C# language version 8.0 or later and you have opted your project into the nullable reference types feature (<Nullable>enable</Nullable>), you will see warnings in Visual Studio declaring the expected null state of reference type variables.
API : .NET 5
.NET 5 is now supported when building WPF (or WinForms). .NET 5, the next major release of .NET Core following version 3.1, frees your applications from the system-wide .NET Framework dependency and enables you to take advantage of deployment improvements such as entirely self-contained executables.
To update your WPF (or WinForms) .NET Core 3.1 apps to target .NET 5:
- In Solution Explorer, select the project to open the XML editor or right click the project and choose Edit Project File.
- Change the target framework to:
- <TargetFramework>net5.0-windows10.0.18362.0</TargetFramework>.
- Note while the target framework specifies which APIs are required/available, this becomes the effective minimum unless you also specify the SupportedOSPlatformVersion value. For example, if you want to support Windows 8.1 then also add this element to your project file:
- <SupportedOSPlatformVersion>8.1</SupportedOSPlatformVersion>
- For more information see the Microsoft docs topic Target frameworks in SDK-style projects.
API : WinUI 3 (preview)
At 100.10 we are releasing our first preview of support for WinUI 3, the new native UI platform for Windows. WinUI 3 can be used directly as the UI layer for your Win32 and UWP apps instead of WinForms, WPF, or UWP controls. For example, this means you can combine the modern aesthetic and performance of the WinUI 3 UX with ArcGIS Runtime capabilities targeting the Win32 desktop app platform where you are currently using WPF or WinForms.
To try out ArcGIS Runtime and WinUI 3:
- Follow the Microsoft docs Get Started steps to Create a WinUI 3 desktop app for C# and .NET 5.
- Open the NuGet Package Manager for your new WinUI application project.
- Install package Esri.ArcGISRuntime.WinUI version 100.10.0-preview1.
- Open MainWindow.xaml.
- Add a XAML namespace
- e.g. xmlns:esri="using:Esri.ArcGISRuntime.UI.Controls"
- Add a map view control (and remove the StackPanel)
- e.g. <esri:MapView x:Name="MyMapView" />
- Open MainWindow.xaml.cs
- Open a browser and go to your ArcGIS Developer dashboard to get your API key.
- Set your ArcGIS API key
- e.g. ArcGISRuntimeEnvironment.ApiKey = "<Your_API_key_here>";
- Create a new map and set the map view's map property
- e.g. MyMapView.Map = new Map(BasemapStyle.ArcGISChartedTerritory);
- Run the app to see ArcGIS Runtime and Win UI in action.
API : UI interaction and rendering
UI and rendering related enhancements to the experience for the end-user and for the developer:
- Support for SceneView keyboard navigation with the UWP and WPF APIs : The following keyboard actions are now supported. If the key is held down, the action will be continuous. Keyboard interactions such as forward/backwards, sideways, or change elevation will move at one times the current altitude per second. Keyboard interactions such as turn and change pitch move at twenty degrees per second.
- "N" : Reset heading
- "P" : Reset pitch
- "A" : Turn west
- "D" : Turn east
- "W" : Pitch up
- "S" : Pitch down
- "U" : Raise elevation
- "J" : Lower elevation
- "Up" : move forward
- "Down" : move backward
- "Left" : move left
- "Right" : move right
- Android MapView and SceneView now rendered using the TextureView : This is an internal change improves rendering stability on a wider range of devices and GPUs, particularly when using the SceneView.
API : Web and security
Enhancements as part of our ongoing work to enable efficient, secure access to remote content:
- Improved support for proxy authentication workflows : The AuthenticationManager will now raise an authentication challenge when a 407 Proxy Authentication Required status code is returned. A new ProxyCredential class provides support for adding network credentials for a given Uri and HTTP authentication scheme (e.g. "Basic"). Additionally, CredentialRequestInfo now has a ProxyServiceUri property to distinguish between the proxy service URI and the destination service URI (e.g. the portal URI).
- Support for OAuth2 Proof Key for Code Exchange (PKCE) : ArcGIS Runtime API for .NET will automatically use OAuth2 PKCE if supported by the server.
- Android CredentialPersistence implementation has been updated for API 23 : The CredentialPersistence approach now uses AES symmetric keys in the keystore. If you previously implemented credential persistence in your .NET Android applications, we recommend resetting any cached credentials via the KeyStoreCredentialPersistence.Clear() method which will clean up legacy keys and generate a new secret key with updated security the next time persistence is used.
- All to ArcGIS Online are now sent as HTTPS.
API : Additions and enhancements
- Tiles will be re-requested in network disconnect / reconnect scenarios.
- Geometry optimizations resulted in less memory allocated when working with PointCollections, and when constructing polylines and polygons from points.
- Improved error handing when trying to start SystemLocationDataSource with location services disabled, raising a NotSupportedException.
- Resolved an issue binding to RuntimeObservableCollection.
API : Native DLL name changes
Multi-version, side-by-side deployments of the WPF API included with ArcGIS Runtime SDK for .NET are now supported. This enhancement required a minor change to the deployment profile: RuntimeCoreNet.WPF.dll and RuntimeCoreNet.dll files now include the version number in the file name: RuntimeCoreNet100_10.dll RuntimeCoreNet100_10.WPF.dll. Additionally, a manifest file (runtimecoreAssembly.manifest) is now included with the native libraries and must be included in your deployments to enable multi-version, side-by-side support. Note that if you are using WPF for .NET Core and have written a custom DllImportResolver, you will need to update the dll name string. Consider using String.StartsWith("RuntimeCoreNet") to locate the library.
SDK : Toolkit
The Toolkit for ArcGIS Runtime SDK for .NET is released in unison with ArcGIS Runtime 100.10 and includes components that support your development of apps when using WPF, UWP, Xamarin.Android, Xamarin.iOS, and Xamarin.Forms.
SDK : Documentation
Many exciting updates to the ArcGIS developer site as part of the ArcGIS Platform launch.
SDK : Samples
New samples, sample updates, and enhancements to the sample viewer apps:
- New sample : Edit features with feature-linked annotation.
- Various bug fixes across all platforms.
- New basemap styles : Samples have been updated to use the new BasemapStyle constructor on the Map class.
- API key management : All sample viewers now have UI support for setting an API key and persisting on the device. Use of Esri location services, including basemaps and geocoding, requires either an ArcGIS identity or an API key. An API key is now required when using the samples. Your default API key will be created for you when you sign up for an ArcGIS Developer account and can be accessed from your ArcGIS Developer dashboard. For more information see security and authentication overview. You can also specify your API key directly in the sample viewer source code in the GetLocalKey() method of the ApiKeyManager class.
SDK : Open Source Apps
Deprecation notices
- Support on the Windows operating system for graphics hardware rendering of maps and scenes at and below Direct3D Feature Level 9_3 has been removed. Version 100.9 was the last release to include support for this capability. Version 100.10 requires Direct3D Feature Level 10_0 minimum to enable hardware GPU rendering of maps and scenes. On devices with a maximum Direct3D Feature Level at or below 9_3, ArcGIS Runtime will use the DirectX component WARP to support the display of maps and scenes via software rendering. To determine the Direct3D Feature Level(s) supported by the hardware on a specific device, follow the instructions to Open and run DxDiag.exe, select the Display tab, and within the Drivers section refer to the Feature Level value(s) listed.
- ArcGIS Runtime Local Server version 100.10 only supports geoprocessing and map packages created with ArcGIS Pro. Version 100.9 was the last release to support ArcGIS Desktop 10.x packages created in ArcMap.
ArcGIS Runtime Local Server
There is an upcoming 100.10 release of the ArcGIS Runtime Local Server component to provide map and geoprocessing package compatibility with ArcGIS Pro 2.7.x. We anticipate being able to announce this release within the next few weeks. Until then you can update your existing WPF projects to reference Esri.ArcGISRuntime.WPF 100.10 and continue to reference Esri.ArcGISRuntime.LocalServices 100.9.
We thank you for your ongoing support and feedback and hope you will find these updates valuable as you continue to use ArcGIS Runtime to build amazing applications for your users.
The ArcGIS Runtime .NET Dev Team