你的project.json没有;t列表'win10'作为目标运行时

Your project.json doesn't list 'win10' as a targeted runtime

本文关键字:win10 运行时 目标 列表 project json 没有 你的      更新时间:2023-09-26

我讨厌转发,但我认为在MSDN论坛上发帖是正确的做法,因为看起来没有多少人使用HTML/JavaScript开发UWP应用程序,但由于我根本没有答案,我向伟大的SO社区寻求帮助。

问题:
我有一个非常简单的HTML/JavaScript UAP应用程序,它引用了一个Windows运行时组件,该组件引用了类库。

我需要在PC和/或手机上运行项目,所以我需要用任何CPU编译它。问题是,每当我想编译我的应用程序时,我都会收到以下错误:

Your project.json doesn't list 'win10' as a targeted runtime. You should add '"win10": { }' inside your "runtimes" section in your project.json, and then re-run NuGet restore.

如果我在运行时添加了普通的win10条目,我会得到许多其他错误。这就是我的project.json的样子:

{
"dependencies": {
    "Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0"
},
"frameworks": {
    "uap10.0": { }
},
"runtimes": {
    "win10-arm": { },
    "win10-arm-aot": { },
    "win10-x86": { },
    "win10-x86-aot": { },
    "win10-x64": { },
    "win10-x64-aot": { }
}
}

此外,如果有人有兴趣查看,这里有一个最低限度的谴责。

AnyCPU不再是托管(C#/VB)UWP应用程序的有效配置。这是因为UWP应用程序的所有托管代码(exe或dll)都是使用.NET Native工具链编译的,以构建特定于体系结构的二进制文件。因此,如果您在HTML/JS UWP应用程序中使用托管WinRT组件,您还需要根据部署到的设备在应用程序项目中设置特定架构,即x86用于桌面,ARM用于手机设备。

我有类似的设置和完全相同的问题。我目前的解决方法是在桌面上测试时将编译器设置为x86,在移动设备上测试时更改为ARM。远非最佳,但如果你能想出更好的办法,我很乐意收到回复。

根据这篇SO文章,UWP/C#应用程序不支持AnyCPU。

除了确保使用.NET本机编译进行测试外,您可能还会注意到AnyCPU构建配置已经消失。随着.NET Native的加入,AnyCPU不再是有效的构建配置,因为本机编译依赖于体系结构。这样做的另一个后果是,在打包应用程序时,应选择所有三种体系结构配置(x86、x64和ARM),以确保应用程序适用于尽可能多的设备。

来源:.NET Native–它对通用Windows平台(UWP)开发人员意味着什么

要修复此错误:在项目页面上;构建选项卡:平台目标="下拉列表中的值,即x86、x64、ARM"用于本地运行。如果发布。。。右键单击项目,选择"存储|创建应用程序包…"。。。在选择和配置程序包页面上,取消选中中性(任何CPU),选中x86、x64、ARM。