Inicie programas más rápidos instalados mediante Ngen.exe

Fecha de creación de la página :

medio ambiente

Visual Studio
  • Comunidad de Visual Studio 2017
  • Comunidad de Visual Studio 2019
Conjunto de herramientas WiX
3.11.2

※ Funciona en otras versiones, pero no está confirmado

Al principio

La aplicación .NET Framework crea e instala imágenes nativas mediante Ngen.exe. Puede acelerar el inicio y la ejecución.

Sin embargo, para crear una imagen nativa, debe utilizar Ngen.exe en el entorno donde ejecuta la aplicación. No se puede distribuir una imagen preimpresada. Por lo tanto, ¿desea que los usuarios ejecuten Ngen.exe manualmente? Debe ejecutarse durante la instalación.

En esta sección se describen los pasos para realizar Ngen.exe en el exe o dll de destino en la configuración de wiX durante la instalación.

Tenga en cuenta que Ngen.exe solo es válido para aplicaciones de .NET Framework y es originalmente un ensamblado nativo. No tiene sentido usarlo para aplicaciones .NET Core.

Preparación por adelantado

  • Supongamos que ha creado un instalador con WiX.

Agregar referencia de biblioteca

Agregue WixNetFxExtension.dll a su referencia. La ruta de la carpeta es C:\Archivos de programa (x86)\WiX Toolset v3.11\bin.

image

image

image

Editar Product.wxs

Agregue la configuración a los archivos que ejecutan Ngen.exe.

Wix/@xmlns

Agregue el espacio de nombres 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">

Agregar parámetros a componentes (archivos) que crean imágenes nativas

Agregue netfx:NativeImage a los elementos secundarios del archivo de destino.

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

Si exe o dll se refieren (depende) a otras dll debido a la naturaleza de Ngen.exe, puede especificar solo el exe o dll desde el que desea hacer referencia a él. Por ejemplo, si A.exe hace referencia a B.dll, establecer NativeImage en A.exe solo se aplica automáticamente a B.dll.

Sin embargo, si A.exe carga dinámicamente B.dll usando Assembly.Load y similares después de la ejecución, B.dll no es una dependencia. El uso de Ngen.exe para A.exe no compila el B.dll. En este caso, establezca nativeImage en B.dll también.

@Id

Nombre de identificación de la imagen nativa. No se superponga a otros IDs.

@Platform

Especifique "32bit", "64bit" o "all". Cambie la configuración a 32 bits o 64 bits para la aplicación que está instalando. All crea ambas imágenes nativas, así que especifique las bibliotecas que cambian de acuerdo con el estado de ejecución, como "Cualquier CPU".

@Priority

Cuándo ejecutar Ngen.exe durante la instalación. Puede especificar 0-3, pero para obtener más información, consulte el sitio web oficial.

Resumen

Después de crear el instalador, puede ver que si la instalación se realiza correctamente, se crea una imagen nativa y se registra en la carpeta de ensamblado.

image