2017-02-02 12 views
1

Недавно я создал пустое приложение UWP в Visual Studio 2015, а затем попытался добавить пакет nuget в это приложение. Установка пакета не удалась, и в результате следующих messasges в окне вывода ...Универсальная платформа для Windows/UAP: что такое 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-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, которое я создаю, как ожидается, будет загружено только с одной стороны (это бизнес-приложение). Тем не менее, в конечном итоге он может быть распространен через Windows Бизнес Магазин, чтобы облегчить обновление и т. Д.

Спасибо.

+1

Это означает «Впереди времени». Противоположность «Just in Time». Описывает, как промежуточный код в ваших сборках компилируется в машинный код. Компилятор AOT в UWP лучше известен как .NET Native. И да, совершенно несовместимо с Reflection.Emit, поскольку для этого всегда требуется компилятор точно в момент времени. Вы не можете использовать его в приложении UWP. –

+0

@ Мартин Робинс, любое обновление для этой проблемы? Не могли бы вы получить полезную информацию из ниже ответа? –

ответ

2

Runtime - это общий термин, который относится к любой библиотеке, каркасу или платформе, на которой работает ваш код. Время автономной работы win10-arm и win10-arm-aot - это разные платформы. Вот Википедия: Runtime system. Кроме того, согласно Википедии Ahead-of-time (AOT):

Ahead-оф-времени (АОТ) сборник является актом компиляции высокого уровня языка программирования, таких как C или C++, или промежуточный язык , такие как Java байткод или .NET Common Intermediate Language (CIL), в собственный (зависящий от системы) машинный код с намерением выполнить исполняемый двоичный файл. Некоторые языки программирования с управляемым кодом выполнения, которые могут быть составлены на промежуточном языке, воспользоваться только по времени (JIT)

Так что я согласен с Хансом Passant, то AOT компилятор несовместим с системой .Reflection.Emit.ILGeneration package. Таким образом, вы можете удалить эти промежутки времени автономной работы, если хотите использовать этот пакет.

 Смежные вопросы

  • Нет связанных вопросов^_^