El siguiente comando genera una imagen nativa para ClientApp.exe, que se encuentra en el directorio actual, e instala la imagen en la caché de imágenes nativas. Si existe un archivo de configuración para el ensamblado, Ngen.exe utilizará dicho archivo. Además, se generarán imágenes nativas para cualquier archivo .dll al que haga referencia ClientApp.exe.
ngen install ClientApp.exe
Una imagen instalada con Ngen.exe también recibe el nombre de raíz. Una raíz puede ser una aplicación o un componente compartido.
El siguiente comando genera una imagen nativa para MyAssembly.exe con la ruta especificada.
ngen install c:\myfiles\MyAssembly.exe
A la hora de buscar los ensamblados y sus dependencias, Ngen.exe utiliza la misma lógica de búsqueda que Common Language Runtime. De forma predeterminada, el directorio que contiene ClientApp.exe se utiliza como directorio base de la aplicación y todas las búsquedas de ensamblados comienzan en este directorio. Se puede reemplazar este comportamiento utilizando la opción /AppBase.
Nota |
|---|
| Se trata de un cambio de comportamiento de Ngen.exe en las versiones 1.0 y 1.1 de .NET Framework, donde la base de la aplicación está establecida en el directorio actual. |
Un ensamblado puede disponer de una dependencia sin referencia alguna; por ejemplo, si carga un archivo .dll mediante el método System.Reflection.Assembly.Load. Se puede crear una imagen nativa de este archivo .dll utilizando la información de configuración del ensamblado de aplicación, con la opción /ExeConfig. El siguiente comando genera una imagen nativa de MyLib.dll, utilizando la información de configuración de MyApp.exe.
ngen install c:\myfiles\MyLib.dll /ExeConfig:c:\myapps\MyApp.exe
Los ensamblados instalados de esta manera no se quitan cuando se quita la aplicación.
Para desinstalar una dependencia, utilice las mismas opciones de línea de comandos que se utilizaron para su instalación. El siguiente comando desinstala el archivo MyLib.dll del ejemplo anterior.
ngen uninstall c:\myfiles\MyLib.dll /ExeConfig:c:\myapps\MyApp.exe
Para crear una imagen nativa de un ensamblado en la caché de ensamblados global, utilice el nombre para mostrar del ensamblado. Por ejemplo:
ngen install "ClientApp, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=3c7ba247adcd2081, processorArchitecture=MSIL"
NGen.exe generará un conjunto independiente de imágenes para cada escenario que se instale. Por ejemplo, el siguiente comando instala un conjunto completo de imágenes nativas para el funcionamiento normal, otro conjunto completo para la depuración y un tercero para la creación de perfiles:
ngen install MyApp.exe
ngen install MyApp.exe /debug
ngen install MyApp.exe /profile
Mostrar la caché de imágenes nativas
Una vez instaladas las imágenes nativas en la caché, se podrán mostrar mediante Ngen.exe. El siguiente comando muestra todas las imágenes nativas en la caché de imágenes nativas.
La acción display muestra primero todos los ensamblados raíz, seguidos de una lista de todas las imágenes nativas del equipo.
Utilice el nombre sencillo de un ensamblado para que se muestre únicamente información de dicho ensamblado. El siguiente comando muestra todas las imágenes nativas de la caché de imágenes nativas que coinciden con el nombre parcial MyAssembly, sus dependencias y todas las raíces que tienen una dependencia en MyAssembly:
Conocer las raíces que dependen de un ensamblado de componentes compartidos resulta de gran utilidad para valorar el impacto de una acción update una vez actualizado el componente compartido.
Si se especifica la extensión de archivo de un ensamblado, debe especificarse la ruta de acceso o debe ejecutarse Ngen.exe desde el directorio que contiene el ensamblado:
ngen display c:\myApps\MyAssembly.exe
El siguiente comando muestra todas las imágenes nativas de la caché de imágenes nativas con el nombre MyAssembly y la versión 1.0.0.0.
ngen display "myAssembly, version=1.0.0.0"
Actualizar imágenes
Las imágenes suelen actualizarse después de que se haya actualizado un componente compartido. Para actualizar todas las imágenes nativas que hayan cambiado o cuyas dependencias hayan cambiado, utilice la acción update sin ningún argumento.
Actualizar todas las imágenes puede ser un proceso largo. Puede poner en cola las actualizaciones para su ejecución por parte del servicio de imágenes nativas utilizando la opción /queue. Para obtener más información sobre la opción /queue y las prioridades de instalación, vea Servicio de imágenes nativas.
Desinstalar imágenes
Ngen.exe mantiene una lista de dependencias, para que los componentes compartidos se quiten únicamente cuando se hayan quitado todos los ensamblados que dependen de ellos. Además, si un componente compartido se ha instalado como raíz, no se quitará.
El siguiente comando desinstala todos los escenarios de la raíz ClientApp.exe:
Se puede utilizar la acción uninstall para quitar escenarios concretos. El siguiente comando desinstala todos los escenarios de depuración de ClientApp.exe:
ngen uninstall ClientApp /debug
Nota |
|---|
| La desinstalación de escenarios /debug no desinstala los escenarios que incluyen tanto /profile como /debug. |
El siguiente comando desinstala todos los escenarios de una versión concreta de ClientApp.exe:
ngen uninstall "ClientApp, Version=1.0.0.0"
Los siguientes comandos desinstalan todos los escenarios de "ClientApp, Version=1.0.0.0, Culture=neutral, PublicKeyToken=3c7ba247adcd2081, processorArchitecture=MSIL", o simplemente el escenario de depuración de dicho ensamblado:
ngen uninstall "ClientApp, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=3c7ba247adcd2081, processorArchitecture=MSIL"
ngen uninstall "ClientApp, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=3c7ba247adcd2081, processorArchitecture=MSIL" /debug
Al igual que ocurre con la acción install, cuando se suministra una extensión, es necesario ejecutar Ngen.exe desde el directorio que contiene el ensamblado o especificar una ruta de acceso completa.
Para obtener ejemplos relacionados con el servicio de imágenes nativas, vea Servicio de imágenes nativas.