当 UWP 解决方案包含 Windows 运行时组件 (C#) 时 WACK 失败
WACK fails when UWP solution includes Windows Runtime Component (C#)
我的 UWP 应用程序 (C++ XAML/DirectX) 正在使用 Windows 运行时组件 (C#) (*)
Windows App Cert Kits "Supported API Test" 失败并出现错误 (**),提示我应该激活 .net native。如果是这种情况,我该如何将 WRC 编译为本机? WRC 项目没有涉及 .net native 的任何选项,我的项目是 C++ 应用程序,它也缺少有关 .net native 的任何选项。
注:
- 我的应用程序运行正常,包括 WRC 提供的功能。
- 没有 WRC,我的应用通过了 WACK。
(*) 我使用的 WRC 是 https://www.nuget.org/packages/NotificationsExtensions.Win10/
(**) 我得到的错误:
此应用程序类型不支持 - API uwphost.dll 中的 ExecuteAssembly。 UWPShim.exe 称之为 API.
- API 此应用程序类型不支持 uwphost.dll 中的 DllGetActivationFactory。 UWPShim.exe 有一个转发到此 API 的导出。
- API 此应用程序类型不支持 api-ms-win-core-synch-l1-1-0.dll 中的 OpenSemaphore。 System.Threading.dll 称之为 API.
- API 此应用程序类型不支持 api-ms-win-core-kernel32-legacy-l1-1-0.dll 中的 CreateSemaphore。 System.Threading.dll 称之为 API.
编辑:我使用 Windows 10,Visual Studio 2015 Update 3 和最新的 Windows 10 SDK(版本号为 10.0.14393.33)
Windows 10 个 UWP 应用中不支持此方案。
UWP 中的 C# 代码 应该 使用 .NET Native 编译才能通过认证(尽管它可以 运行 在没有 .NET Native 编译的情况下自由使用!)。但是 .NET Native 工具链不支持特定 Windows 运行时组件的本地编译。仅适用于主应用也是 C# 应用的场景。
因此,当您从 C++ 代码引用 C# WinRT 组件时,它会在组件激活期间加载 .NET 运行时(因为它没有使用 .NET Native 编译为本机代码!)并且 .NET 运行时受商店认证限制,因此 WACK 失败。
它实际上是支持的场景 - 您可以将此类应用程序发布到 Windows 商店就好了,错误只是 WACK 部分的错误,可以忽略。
我的 UWP 应用程序 (C++ XAML/DirectX) 正在使用 Windows 运行时组件 (C#) (*)
Windows App Cert Kits "Supported API Test" 失败并出现错误 (**),提示我应该激活 .net native。如果是这种情况,我该如何将 WRC 编译为本机? WRC 项目没有涉及 .net native 的任何选项,我的项目是 C++ 应用程序,它也缺少有关 .net native 的任何选项。
注:
- 我的应用程序运行正常,包括 WRC 提供的功能。
- 没有 WRC,我的应用通过了 WACK。
(*) 我使用的 WRC 是 https://www.nuget.org/packages/NotificationsExtensions.Win10/
(**) 我得到的错误:
-
此应用程序类型不支持
- API uwphost.dll 中的 ExecuteAssembly。 UWPShim.exe 称之为 API.
- API 此应用程序类型不支持 uwphost.dll 中的 DllGetActivationFactory。 UWPShim.exe 有一个转发到此 API 的导出。
- API 此应用程序类型不支持 api-ms-win-core-synch-l1-1-0.dll 中的 OpenSemaphore。 System.Threading.dll 称之为 API.
- API 此应用程序类型不支持 api-ms-win-core-kernel32-legacy-l1-1-0.dll 中的 CreateSemaphore。 System.Threading.dll 称之为 API.
编辑:我使用 Windows 10,Visual Studio 2015 Update 3 和最新的 Windows 10 SDK(版本号为 10.0.14393.33)
Windows 10 个 UWP 应用中不支持此方案。 UWP 中的 C# 代码 应该 使用 .NET Native 编译才能通过认证(尽管它可以 运行 在没有 .NET Native 编译的情况下自由使用!)。但是 .NET Native 工具链不支持特定 Windows 运行时组件的本地编译。仅适用于主应用也是 C# 应用的场景。 因此,当您从 C++ 代码引用 C# WinRT 组件时,它会在组件激活期间加载 .NET 运行时(因为它没有使用 .NET Native 编译为本机代码!)并且 .NET 运行时受商店认证限制,因此 WACK 失败。
它实际上是支持的场景 - 您可以将此类应用程序发布到 Windows 商店就好了,错误只是 WACK 部分的错误,可以忽略。