如何修复 Microsoft Store 包验证错误:您无法提交预编译的 .NET Native 包?

问题描述

我正在开发一个 WPF 应用程序,我添加一个自定义 WinRT 组件(在 UWP 中实现),并且我正在通过 XamlHost 在 WPF 应用程序中托管这个 win10 组件。我遵循了 documentation 的每一步,我的自定义控件是在 UWP app project 而不是 UWP class library 中实现的。应用程序运行良好,UWP 组件在 WPF 应用程序中正确显示。我可以创建应用程序包,但是当我上传到 Microsoft Store(.msixupload 文件)时,抛出了以下错误

Package acceptance validation error: You cannot submit pre-compiled .NET Native packages. Please upload the Microsoft Store appxupload file and try again.

预编译的 .NET Native 包是什么意思?

我还检查了 sample application,其中包含针对不同架构的 winrthost.dll。但是文档没有提到这一点,我还添加到我的 UWP 项目中,并在示例应用程序的 .csproj 文件中进行了配置。我试图删除这个 dll 文件,但商店仍然不接受构建。

当我删除UWP App 项目的引用时,应用商店接受了我的构建。当我重新添加引用(不使用其中的任何组件)时,商店拒绝了。所以我认为问题出在自定义 UWP 应用程序中,但这里的预编译 .NET Native 包是什么?

更新:

我向解决方添加一个新的空 UWP 应用项目,只需设置 XamlApplication 并从 WPF 应用程序中引用它。 UWP 组件显示在 WPF 中(我只添加一个绿色矩形),但是当我尝试上传到商店时,它显示相同的错误消息。

正如 documentation 所说,还尝试创建 UWP 类库而不是 UWP 应用。创建构建和商店接受...有什么区别?

文档说:

您也可以在 UWP 应用项目中定义自定义控件 您在上一节中创建的。但是,这些步骤在一个 单独的类库项目用于说明目的,因为这 自定义控件通常是为了可移植性而实现的。

因此,理论上可以发布带有托管在 UWP 应用程序中的自定义 WinRT 组件的 WPF 应用程序,对吗?那为什么商店不接受?

解决方法

经过一天的调查,我发现解决方案只是添加UWP app作为对Packaging项目的引用(而不仅仅是添加到WPF app)。

当我添加到参考文献时,商店接受了构建。更多详情here