最近,我在Visual 2015中创建了一个空白的UWP应用程序,然后尝试向该应用程序添加一个nuget包。包安装失败,导致输出窗口中出现以下消息.
System.Reflection.Emit.ILGeneration 4.0.1 provides a compile-time reference assembly for System.Reflection.Emit.ILGeneration on UAP,Version=v10.0, but there is no run-time assembly compatible with win10-arm-aot.
One or more packages are incompatible with UAP,Version=v10.0 (win10-arm-aot).
System.Reflection.Emit.ILGeneration 4.0.1 provides a compile-time reference assembly for System.Reflection.Emit.ILGeneration on UAP,Version=v10.0, but there is no run-time assembly compatible with win10-x64-aot.
One or more packages are incompatible with UAP,Version=v10.0 (win10-x64-aot).
System.Reflection.Emit.ILGeneration 4.0.1 provides a compile-time reference assembly for System.Reflection.Emit.ILGeneration on UAP,Version=v10.0, but there is no run-time assembly compatible with win10-x86-aot.
One or more packages are incompatible with UAP,Version=v10.0 (win10-x86-aot).环顾四周,我发现了“project.json”中对“运行时”的引用;(我的是这样的).
{
"dependencies": {
"Microsoft.NETCore.UniversalWindowsPlatform": "5.1.0"
},
"frameworks": {
"uap10.0": {}
},
"runtimes": {
"win10-arm": {},
"win10-arm-aot": {},
"win10-x86": {},
"win10-x86-aot": {},
"win10-x64": {},
"win10-x64-aot": {}
}
}我的问题是:每个“运行时”与附加"-aot“的等效运行时之间有什么区别?
我见过一些帖子指出,如果我想使用一个不支持这些运行时的nuget包,我可以删除这些运行时,但我希望只删除它们,知道它们是什么。
注:我不知道这是否有任何区别,但我正在构建的UWP应用程序预计只会被侧加载(这是一个业务应用程序)。但是,它最终可能需要通过分发,以方便更新等等。
谢谢。
发布于 2017-02-03 03:18:25
运行时是一个通用术语,指的是运行代码的任何库、框架或平台。win10 10 arm和win10 10 arm aot运行时是不同的平台.这里是维基百科:运行时系统。此外,根据维基百科的提前(AOT)
提前编译是将高级编程语言(如C或C++ )或中间语言(如Java字节码或.NET公共中间语言(CIL)代码)编译成本机(依赖于系统的)机器代码的行为,目的是在本地执行生成的二进制文件。一些具有托管代码运行库的编程语言可以编译成中间语言,可以利用即时(JIT)的优点。
因此,我同意Hans的观点,即AOT编译器与System.Reflection.Emit.ILGeneration包不兼容。因此,如果要使用此包,可以删除这些aot运行时。
发布于 2018-09-21 12:44:36
我找到了我的案子的解决方案。我在我的解决方案中有几个项目,它们都在使用
Microsoft.NETCore.UniversalWindowsPlatform V 5.2.3
除了一个项目。它用的是
Microsoft.NETCore.UniversalWindowsPlatform V 5.0.0
当我更新5.0.0到5.2.3时,所有的错误都消失了。
注意:您不需要从JSON文件中删除aot标记.
https://stackoverflow.com/questions/42008460
复制相似问题