通用Windows平台/UAP:什么是AOT?
我最近在Visual Studio 2015中创建了一个空白的UWP应用程序,然后尝试向该应用程序添加一个nuget包。包安装失败,导致输出窗口出现以下消息通用Windows平台/UAP:什么是AOT?,windows,visual-studio-2015,uwp,nuget,nuget-package,Windows,Visual Studio 2015,Uwp,Nuget,Nuget Package,我最近在Visual Studio 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
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”中找到了对“运行时”的引用;(我的看起来像这样)
我的问题是:每个“运行时”和附加“-aot”的等效运行时之间有什么区别
我看到一些帖子表明,如果我想使用不支持这些运行时的nuget包,我可以删除这些运行时,但我更愿意只删除它们,而不知道它们是什么
注意:我不知道这是否有任何区别,但我正在构建的UWP应用程序预计只会被侧向加载(它是一个业务线应用程序)。但是,它最终可能需要通过Windows Business Store分发,以便于更新等
谢谢。运行时是一个通用术语,指代码运行的任何库、框架或平台。win10 arm和win10 arm aot运行时是不同的平台。这是一个维基百科:。 此外,根据维基百科: 提前(AOT)编译是编译高级 编程语言,如C语言或C++语言,或中间语言 例如Java字节码或.NET公共中间语言(CIL)代码, 转换为本机(系统相关)机器代码,目的是 以本机方式执行生成的二进制文件。 一些具有托管代码运行时的编程语言可以编译为中间语言,利用了实时性 (准时制)
所以我同意Hans Passant的观点,AOT编译器与System.Reflection.Emit.ILGeneration包不兼容。因此,如果您想使用此软件包,可以删除这些aot运行时。我找到了解决方案。我的解决方案中有几个项目,它们都在使用 Microsoft.NETCore.UniversalWindowsPlatform V 5.2.3 除了一个项目。它正在使用 Microsoft.NETCore.UniversalWindowsPlatform V 5.0.0 当我将5.0.0更新为5.2.3时,所有错误都消失了
注意:您不需要从JSON文件中删除aot标记。它的意思是“提前”。与“及时”相反。描述将程序集中的中间代码编译为机器代码的方式。UWP中的AOT编译器被称为.NET本机。是的,与Reflection.Emit非常不兼容,因为它总是需要即时编译器。您不能在UWP应用程序中使用它。@Martin Robins,有关于此问题的更新吗?你能从下面的答案中得到有用的信息吗?你是否通过修改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": {}
}
}