您的project.json没有将'win10'列为目标运行时

时间:2016-01-13 13:38:51

标签: javascript windows-runtime win-universal-app uwp

我讨厌转发,但我认为张贴到MSDN forum是正确的事情,因为它看起来没有很多人使用HTML / JavaScript处理UWP应用程序,但是,因为我根本没有答案,我转向伟大的SO社区寻求帮助。

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

我需要预测在PC和/或手机中运行,所以我需要使用Any 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": { }
}
}

此外,如果有人有兴趣查看它,还有一个最小的复制here

3 个答案:

答案 0 :(得分:19)

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

答案 1 :(得分:12)

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

根据this SO帖子,UWP / C#应用不支持AnyCPU。

  

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

来源:.NET Native – What it means for Universal Windows Platform (UWP) developers

答案 2 :(得分:0)

要解决此错误,请执行以下操作: 在项目页面上;构建选项卡:对于本地运行,平台目标=“下拉列表中的值,即x86,x64,ARM”。 如果发布... 右键单击项目,选择商店|创建应用程序包... 在选择并配置程序包页面上,取消选中“中性(任何CPU)”,然后选中x86,x64,ARM。