Avvia programmi più veloci installati utilizzando Ngen.exe
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.
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.