Avvia programmi più veloci installati utilizzando Ngen.exe

Data di creazione della pagina :

ambiente

Visual Studio
  • Comunità di Visual Studio 2017
  • Comunità di Visual Studio 2019
Set di strumenti WiX
3.11.2

※ Funziona in altre versioni, ma non è confermato

Dapprima

L'applicazione .NET Framework crea e installa immagini native utilizzando Ngen.exe. È possibile accelerare l'avvio e l'esecuzione.

Tuttavia, per creare un'immagine nativa, è necessario utilizzare Ngen.exe nell'ambiente in cui si esegue l'applicazione. Non è possibile distribuire un'immagine pre-imaged. Pertanto, si desidera che gli utenti esegre Ngen.exe manualmente? Deve essere eseguito durante l'installazione.

In questa sezione vengono descritti i passaggi per eseguire Ngen.exe sull'exe o sulla dll di destinazione nelle impostazioni wiX durante l'installazione.

Si noti che Ngen.exe è valido solo per le applicazioni .NET Framework ed è originariamente un assembly nativo. Non ha senso utilizzarlo per le applicazioni .NET Core.

Preparazione in anticipo

  • Supponiamo di aver creato un programma di installazione con WiX.

Aggiungere riferimenti alla libreria

Aggiungi WixNetFxExtension.dll al tuo riferimento. Il percorso della cartella è C:\Programmi (x86)\WiX Toolset v3.11\bin.

image

image

image

Modifica Product.wxs

Aggiungere impostazioni ai file che eseguono Ngen.exe.

Wix/@xmlns

Aggiungere lo spazio dei nomi 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">

Aggiunta di parametri ai componenti (file) che creano immagini native

Aggiungere netfx:NativeImage agli elementi figlio del file di destinazione.

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

Se exe o dll si riferiscono a (dipende) da altre dll a causa della natura di Ngen.exe, è possibile specificare solo l'exe o la dll da cui si desidera fare riferimento ad esso. Ad esempio, se A.exe si riferisce a B.dll, l'impostazione di NativeImage su A.exe si applica automaticamente solo a B.dll.

Tuttavia, se A.exe carica dinamicamente B.dll utilizzando Assembly.Load e simili dopo l'esecuzione, B.dll non è una dipendenza. L'uso di Ngen.exe per A.exe non compila il B.dll. In questo caso, impostare anche nativeImage su B.dll.

@Id

Nome identificativo dell'immagine nativa. Non sovrapporre altri DATI.

@Platform

Specificare "32bit", "64bit" o "all". Modificare le impostazioni a 32 bit o 64 bit per l'applicazione che si sta installando. Tutto crea entrambe le immagini native, quindi specifica le librerie che cambiano in base allo stato di esecuzione come "Qualsiasi CPU".

@Priority

Quando eseguire Ngen.exe durante l'installazione. È possibile specificare 0-3, ma per ulteriori informazioni, fare riferimento al sito Ufficiale.

Sommario

Dopo aver creato il programma di installazione, è possibile vedere che se l'installazione ha esito positivo, viene creata un'immagine nativa e registrata nella cartella dell'assembly.

image