对于 .Net Native C# 应用程序,无法通过 WACK 测试并避免 ILT005 错误

Can't pass WACK tests and avoid ILT005 Error, for .Net Native C# application

我正在尝试让我们的解决方案在 .Net Native 工具链下构建,并通过 WACK (Windows App Cert Kit) 最终将我们的应用程序上传到商店所需的测试。

我们目前已通过选择 "Compile .Net Native tool chain" 的构建,如此处所示 (注意未检查优化代码)

Project Properties

然而,当构建通过时,我们在 运行 WACK 时收到以下错误:

WACK Failure with Optimize Code Disabled

进行一些谷歌搜索后,这个错误似乎只出现在我们面前,因为我们没有在上面的属性中启用优化代码 - 但是,当我们启用此设置时,我们的构建失败并出现以下错误:

Build Failure with Optimize Code Enabled

我在互联网上看到的每个遇到此问题的人都遇到过他们的 Visual Studio 语言设置问题,或者生活在某些旧版本的 Windows 10/Visual Studio,并让这个问题随着时间的推移自行解决。

我使用机器的默认英语和 Visual Studio。我也在最新的 Visual Studio 2017 (15.9.7 Professional) 和 Windows 10 的最新版本(17763.316)。所以 none 这些其他决议在这里适用于我。

我希望有人了解这个 ILT0005 错误以及我们如何解决它。我们正在开发一个使用一些 C++ 项目的 C# 应用程序,并且所有代码都可以在属性中启用 .Net NativeOptimize Code 的情况下正常编译, 但 两者都不.

解决方案是将 DoNotOptimize="true" 包含到我们的 rd.xml 指令中,例如:

<Assembly Name="*Application*" Dynamic="Required All" DoNotOptimize="true" />

这让我们既可以在发布模式下构建,同时选择 "Compile .Net Native tool chain" 和 "Optimize Code" - 但实际上也可以通过 WACK 测试。