.NET 本机 Windows 商店发布

Posted

技术标签:

【中文标题】.NET 本机 Windows 商店发布【英文标题】:.NET native windows store release 【发布时间】:2015-12-14 06:02:36 【问题描述】:

我的应用程序的发布版本有问题。将 windows 商店应用程序重新定位到通用 windows 平台项目后,我无法在发布模式下运行应用程序并选中 Compile with .NET Native 工具链选项。

我收到一个错误:

抛出异常:System.Reflection.MissingRuntimeArtifactException in System.Private.Reflection.Core.dll

附加信息:MakeGenericMethod() 无法创建此通用方法实例化,因为该实例化未启用元数据:System.Linq.Enumerable.Distinct<System.Char>(System.Collections.Generic.IEnumerable<System.Char>) 欲了解更多信息,请访问http://go.microsoft.com/fwlink/?LinkID=616868

当我禁用 Compile with .NET Native 工具链时,应用程序正在工作并且不会引发异常。 通常这是解决方案,但在 Windows 应用程序认证工具包中,我得到失败的结果并出现错误(测试支持的 API):

·此应用程序类型不支持uwphost.dll 中的API ExecuteAssembly。 App.exe 调用此 API。 ·此应用程序类型不支持uwphost.dll 中的API DllGetActivationFactory。 App.exe 具有转发到此 API 的导出。 ·此应用程序类型不支持ap-ms-win-core-synch-11-1-0.dll 中的API OpenSemaphoreSystem.Threading.dll 调用此 API。 ·此应用程序类型不支持api-ms-win-core-kernel32-legacy-11-1-0.dll 中的API CreateSemaphoreSystem.Threading.dll 调用此 API。

有人可以帮忙吗?

【问题讨论】:

这是您在计算机上安装 .NET Native 工具链的唯一原因。它可以让你测试你的应用程序,以便找出你在哪里使用反射。 .NET Native 无法自行发现的那种代码。以及一旦安装在用户设备上就会使您的应用程序失败的那种代码。您必须将类的类型名称添加到运行时指令配置文件中。 Read this. 这个问题你解决了吗? 【参考方案1】:

.NET Native 运行时不包括 JIT 编译器。因此,必须提前生成所有必要的本机代码。一组启发式方法用于确定应该生成什么代码,但这些启发式方法不能涵盖所有可能的元编程场景。因此,您必须使用运行时指令为这些元编程方案提供提示。如果必要的元数据或实现代码在运行时不可用,您的应用将引发 MissingMetadataException、MissingRuntimeArtifactException 或 MissingInteropDataException 异常。有两个疑难解答程序可以为您的运行时指令文件生成适当的条目以消除异常:

类型的 MissingMetadataException 疑难解答。 方法的 MissingMetadataException 疑难解答。

请看这里:https://msdn.microsoft.com/en-us/Library/dn600640%28v=vs.110%29.aspx

【讨论】:

以上是关于.NET 本机 Windows 商店发布的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 10 Pro 上更改 Docker 本机映像位置

Windows 应用商店应用程序 (.NET) 上的 SSDP (UDP)

使用 protobuf-net 为 Windows 商店应用程序序列化私有成员

如何调试 Windows 商店应用程序崩溃?

.NET GUI 中是不是仍在使用本机 Windows 控件?

为啥要使用托管(C# 和 .NET)或本机代码进行 Windows API 开发?