I have a working WPF application and deployment that is currently on .net framework 4.8 / ArcGIS Runtime 100.15. I'm upgrading it to .net 6 and ArcGIS Runtime 200, but am having issues with the deployment of the application.
Specifically, there appear to be changes to how the MSIX package is being built and the deployment is no longer able to load the ArcGIS runtime. It now fails with the following error:
'Could not load ArcGIS Runtime (RuntimeCoreNet200_0.dll) or one of its dependencies. Ensure "Microsoft Visual C++ 2015-2022 Redistributable" is installed.'
I have attached a test project that demonstrates the issue, but here are a summary of issues:
- VC++ redist central deployment via MSIX package dependency
- ESRI documentation for system requirements states that the minimum version of the VC++ redistributable is 14.32.31326 (https://developers.arcgis.com/net/reference/system-requirements/), however I'm not able to install that version of VCLibs using MSIX's package dependency. The following error is produced when attempting to do that:
- App installation failed with error message: Windows cannot install package b87957eb-eedf-485f-8f6d-0c9374efe8b8_1.0.0.0_x86__pj3157xj7x92a
because this package depends on a framework that could not be found. Provide the framework "Microsoft.VCLibs.140.00.UWPDesktop" published by
"CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US", with neutral or x86 processor architecture and minimum
version 14.32.31326.0, along with this package to install. The frameworks with name "Microsoft.VCLibs.140.00.UWPDesktop" currently installed
are: {Microsoft.VCLibs.140.00.UWPDesktop_14.0.30704.0_x64__8wekyb3d8bbwe Microsoft.VCLibs.140.00.UWPDesktop_14.0.30704.0_x86__8wekyb3d8bbwe}
(0x80073cf3)
- VC++ redistributable via local deployment
- In our existing package, the ArcGIS native dlls are output into the ArcGISRuntime100.15\client32 and ArcGISRuntime100.15\client64 directories of the build output directory.
- After migrating to .net6/ArcGISRuntime200, the client64 and client32 directories are no longer being created. In addition, the MSIX package output directory does not align with the structure that is defined in the WPF targeting .net6 documentation here: https://developers.arcgis.com/net/license-and-deployment/deployment/#runtime-dlls-and-resources-for-wpf-apps
- The attached project uses the win-x86 and win-x64 architecture specific runtime identifiers, but none of the sub directories listed in the document are created.
Our preference would be to use central deployment for the VC++ redist dependency, but could do local deployment if necessary. At any rate, we have the following questions:
- How can we reference the required (14.32.31326) version of the VC++ redist as a MSIX package dependency?
- What VC++ redist files are required if doing the local deployment approach and where should they be placed in the final MSIX package?
- Do the ArcGIS native dlls previously found in bin\ArcGISRuntime100.15\client32 and bin\ArcGISRuntime100.15\client64 need to be present to load the runtime? If so, how do we force MSIX to include them?
Thanks!
Cameron