如何:在执行安装时NGen托管程序集
在安装中NGen可以通过在目标机器上创建托管程序集的本机映像来提高你的托管程序启动时间。本例使用WiX在安装时NGen托管程序集。
第一步:添加WiX .NET扩展库到你的工程
WiX对NGen的支持包含在一个WiX扩展库里,所以首先必须将它添加到你的工程。如果你正在通过命令行的方式使用WiX,你需要添加下面的参数到你的candle和light命令后:
-ext WixNetFxExtension
如果你在Visual Studio中使用WiX,你可以使用添加引用对话框来添加扩展库:
- 在Visual Studio中打开你的WiX工程
- 右键单击解决方案资源管理器中你的工程,选择添加引用...
- 从列表中选择WixNetFxExtension.dll程序集并且单击添加
- 关闭添加引用对话框
第二步:添加WiX .Net 扩展命名空间到你的工程
添加完扩展库以后,你还需要将.NET扩展命名空间添加到你的工程中,这样你就可以访问相应的WiX元素。你需要编辑你工程中顶层的<Wix>元素添加下面的属性:
xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension"
一个带有标准命名空间和.Net扩展命名空间的完整Wix元素看起来应该类似这样:
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension">
第三步:标记NGen托管文件
当你将.NET扩展库和命名空间添加到工程中以后,你就可以使用<NetFx:NativeImage>元素来启用需要NGen的托管程序集。将NativeImage元素放在一个父File元素中:
<Component Id="myapplication.exe" Guid="PUT-GUID-HERE"> <File Id="myapplication.exe" Source="MySourceFiles\MyApplication.exe" KeyPath="yes" Checksum="yes"> <netfx:NativeImage Id="ngen_MyApplication.exe" Platform="32bit" Priority="0" AppBaseDirectory="APPLICATIONROOTDIRECTORY"/> </File> </Component>
Id属性作为本地镜像的唯一标识。Platform属性指定需要生成的本地镜像的平台,这里是32位平台。Priority属性指定镜像应该在什么时候被创建,这里是安装过程中立即创建。AppBaseDirectory属性用来指定安装时该程序集所依赖的程序集的搜索目录。这里被设置为应用程序的安装目录。