下面的命令为当前目录中的 ClientApp.exe 生成本机映像,并在本机映像缓存中安装该映像。如果该程序集存在配置文件,Ngen.exe 将使用它。此外,还会为 ClientApp.exe 所引用的任何 .dll 文件生成本机映像。
ngen install ClientApp.exe
使用 Ngen.exe 安装的映像也称为根。根可以为应用程序或共享组件。
下面的命令生成具有指定路径的 MyAssembly.exe 的本机映像。
ngen install c:/myfiles/MyAssembly.exe
当查找程序集及其依赖项时,Ngen.exe 使用与公共语言运行库所使用的相同的探查逻辑。默认情况下,包含 ClientApp.exe 的目录用作应用程序基目录,所有程序集的探查均从此目录开始。使用 /AppBase 选项可重写此行为。
说明: |
---|
这是对 .NET Framework 1.0 和 1.1 版中的 Ngen.exe 行为的更改,在这些版本中,应用程序基目录设置为当前目录。 |
程序集可以具有不带引用的依赖项(例如,它使用 Assembly..::.Load 方法加载 .dll 文件)。您可以使用 /ExeConfig,使用应用程序程序集的配置信息来为这样的 .dll 文件创建本机映像。下面的命令使用 MyApp.exe 的配置信息为 MyLib.dll, 生成一个本机映像。
ngen install c:/myfiles/MyLib.dll /ExeConfig:c:/myapps/MyApp.exe
在移除应用程序时将不移除以此方式安装的程序集。
若要卸载依赖项,请使用与安装时相同的命令行选项。下面的命令卸载上面示例中的 MyLib.dll。
ngen uninstall c:/myfiles/MyLib.dll /ExeConfig:c:/myapps/MyApp.exe
若要在全局程序集缓存中为程序集创建本机映像,请使用程序集的显示名称。例如:
ngen install "ClientApp, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=3c7ba247adcd2081, processorArchitecture=MSIL"
NGen.exe 会为您安装的每个方案生成一个单独的映像集。例如,下面的命令为正常操作生成一个完整的本机映像集,为调试生成另一个完整的映像集,并为探测生成第三个映像集:
ngen install MyApp.exe
ngen install MyApp.exe /debug
ngen install MyApp.exe /profile
显示本机映像缓存
在缓存中安装本机映像后,就可使用 Ngen.exe 显示这些映像。下面的命令显示本机映像缓存中的所有本机映像。
display 操作首先列出所有的根程序集,然后列出计算机上的所有本机映像。
使用程序集的简单名称仅显示该程序集的信息。下面的命令显示本机映像缓存中与部分名称 MyAssembly 匹配的所有本机映像、其依赖项以及所有依赖 MyAssembly 的根:
了解哪些根依赖于共享组件程序集对于在共享组件升级后确定 update 操作的影响非常有用。
如果指定了程序集的文件扩展名,则必须指定路径,或从包含该程序集的目录执行 Ngen.exe:
ngen display c:/myApps/MyAssembly.exe
下面的命令显示本机映像缓存中名为 MyAssembly 、版本为 1.0.0.0 的所有本机映像。
ngen display "myAssembly, version=1.0.0.0"
更新映像
映像通常是在共享组件更新之后进行更新的。若要更新本身发生更改或者其依赖项发生了更改的所有本机映像,请不带任何参数使用 update 操作。
更新所有映像可能会耗费很长时间。使用 /queue 选项可对更新操作进行排队以等候本机映像服务执行。有关 /queue 选项和安装优先级的更多信息,请参见本机映像服务。
卸载映像
Ngen.exe 维护依赖项的列表,所以,只有当依赖于这些共享组件的所有程序集都被移除后,才会移除这些共享组件。此外,已安装为根的共享组件不会被移除。
下面的命令卸载根 ClientApp.exe 的所有方案:
uninstall 操作可用于移除特定方案。下面的命令卸载 ClientApp.exe 的所有调试方案:
ngen uninstall ClientApp /debug
说明: |
---|
卸载 /debug 方案不会卸载同时包含 /profile 和 /debug. 的方案 |
下面的命令卸载特定版本的 ClientApp.exe 的所有方案:
ngen uninstall "ClientApp, Version=1.0.0.0"
下面的命令卸载 "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"
ngen uninstall "ClientApp, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=3c7ba247adcd2081, processorArchitecture=MSIL" /debug
与 install 操作一样,如果提供了扩展名,则需要从包含该程序集的目录执行 Ngen.exe,或者指定完整路径。
有关本机映像服务的示例,请参见本机映像服务。