Вот моя конфигурация WiX:
<!--EntityFramework.dll-->
<Component Id="cmp_EntityFramework.dll" Guid="DAABA923-D36B-4F95-B25A-D48671D0E5CE">
<File Id="fil_EntityFramework.dll" KeyPath="yes" Vital="yes" Source="$(var.SvcBinDir)\EntityFramework.dll">
<netfx:NativeImage Id="ngen_EntityFramework.dll" Platform="64bit" Priority="0" AppBaseDirectory="INSTALLFOLDER"/>
</File>
</Component>
<!--EntityFramework.SqlServer.dll-->
<Component Id="cmp_EntityFramework.SqlServer.dll" Guid="CBBA1C50-B51D-4ECD-878B-FCAE42CAE65A">
<File Id="fil_EntityFramework.SqlServer.dll" KeyPath="yes" Vital="yes" Source="$(var.SvcBinDir)\EntityFramework.SqlServer.dll">
<netfx:NativeImage Id="ngen_EntityFramework.SqlServer.dll" Platform="64bit" Priority="0" AppBaseDirectory="INSTALLFOLDER"/>
</File>
</Component>
Мне пришлось изменить атрибут «Платформа», чтобы сделать это для 64-битного.Все компилируется и работает нормально.Однако я не вижу, чтобы библиотеки были ngen'd
Вот вывод перед первым запуском установки:
C: \ Windows \ Microsoft.NET \ Framework64 \v4.0.30319> ngen display EntityFramework Microsoft (R) CLR Native Image Generator - версия 4.7.3056.0 Copyright (c) Microsoft Corporation.Все права защищены.
Корни NGEN:
C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ EntityFramework.dll
Корни NGEN, которые зависятна «EntityFramework»:
C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ EntityFramework.dll C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \EntityFramework.SqlServer.dll C: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ EntityFramework.SqlServerCompact.dll
Собственные изображения:
EntityFramework, Версия = 6.0.0.0, Культура = нейтральная, PublicKeyToken = b77a5c561934e089
Вот что я вижу после запуска моего пакета:
C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319> ngen display EntityFramework Microsoft (R) CLR Native Image Generator - версия 4.7.3056.0 Авторские права (c) Корпорация Microsoft.Все права защищены.Ошибка: указанная сборка не установлена.
Я думаю, это очистило кеш?Но тогда ничего не установилось?И вопрос № 2, почему он удалил существующий?Вопрос № 3.Если я использую EF.dll из нескольких мест, я должен ngen каждый?Или только один в порядке?
Я посмотрел журналы NGen, похоже, что он делает все правильно при установке / удалении, но я не вижу ничего, используя "ngen display"