Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通用Windows平台/UAP:什么是AOT?_Windows_Visual Studio 2015_Uwp_Nuget_Nuget Package - Fatal编程技术网

通用Windows平台/UAP:什么是AOT?

通用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

我最近在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 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": {}
  }
}