Стартиране на по-бързи програми, инсталирани с помощта на Ngen.exe

Дата на създаване на страница :

околна среда

Визуално студио
  • Визуална студио общност 2017
  • Общност на визуално студио 2019
WiX Набор инструменти
3.11.2

⿥ Тя работи в други версии, но е непотвърдена

Отначало

Приложението .NET Framework създава и инсталира родни изображения с помощта на Ngen.exe. Можете да ускорите стартирането и изпълнението.

За да създадете роден образ обаче, трябва да използвате Ngen.exe в средата, в която изпълнявате приложението. Не можете да разпространявате предварително изображение. Затова искате ли потребителите да стартират Ngen.exe ръчно? Трябва да се изпълнява по време на инсталацията.

Този раздел описва стъпките за извършване на Ngen.exe на целевата exe или dll в настройките на WiX по време на инсталирането.

Имайте предвид, че Ngen.exe е валиден само за .NET Framework приложения и първоначално е родното събрание. Няма смисъл да го използвате за .NET Core приложения.

Подготовка предварително

  • Да предположим, че сте създали инсталатор с WiX.

Добавяне на препратка към библиотеката

Добавете WixNetFxExtension.dll към вашата препратка. Пътят до папката е C:\Program Files (x86)\WiX Toolset v3.11\bin.

image

image

image

Редактиране на Product.wxs

Добавяне на настройки към файлове, изпълняващи Ngen.exe.

Wix/@xmlns

Добавете пространството на имената на NetFxExtension.

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
		 xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension">

Добавяне на параметри към компоненти (файлове), които създават родни изображения

Добавете netfx:NativeImage към дъщерните елементи на целевия файл.

<Component Win64="yes" Id="OGGVORBISPROJECT.DLL" DiskId="1" Guid="6A1D2FD8-9FA7-40D5-A0EA-356268B3C0B4">
  <File Id="OGGVORBISPROJECT.DLL" Name="OggVorbisProject.dll" Source="LittleSaviorTrial\Dll\OggVorbisProject.dll">
    <netfx:NativeImage Id="NGEN_OGGVORBISPROJECT.DLL" Platform="64bit" Priority="0"/>
  </File>
</Component>

Ако exe или dll се отнасят до (зависи) от други dlls поради естеството на Ngen.exe, можете да зададете само exe или dll, от които искате да се обърнете към него. Например, ако A.exe се отнася за B.dll, задаването на NativeImage на A.exe се отнася автоматично само за B.dll.

Ако обаче A.exe динамично зарежда B.dll с помощта на Assembly.Load и други подобни след изпълнение, B.dll не е зависимост. Използването на Ngen.exe за A.exe не компилира B.dll. В този случай задайте nativeImage на B.dll както и.

@Id

Идентификационно име на родния образ. Не припокривайте други идентификатори.

@Platform

Посочете или "32bit", "64bit" или "всички". Променете настройките на 32bit или 64bit за приложението, което инсталирате. Всички създават и двете родни изображения, така че посочете библиотеки, които превключват според състоянието на изпълнение като "Всеки процесор".

@Priority

Кога да стартирате Ngen.exe по време на инсталацията. Можете да посочите 0-3, но за повече информация, моля, вижте официалния сайт.

Резюме

След като създадете инсталатора, можете да видите, че ако инсталирането успее, се създава и регистрира роден образ в папката за сглобяване.

image