手机版

深入讲解如何使用本地图像生成器(Ngen.exe)工具

时间:2021-11-19 来源:互联网 编辑:宝哥软件园 浏览:

先介绍一点背景知识;那个。Net程序将在运行时进行实时编译。Net程序文件将被编译成cpu能识别的汇编代码。实时编译需要消耗额外的cpu和内存资源,这与服务器端程序无关,因为实时编译只在程序第一次运行时编译,之后就不需要再做了;如果你正在做一个大型的winform程序或者silverlight等客户端程序,你需要考虑提前编译。底下有一个ngen.exe工具。Net framework安装目录(类似c: \ windows \ Microsoft。net \ framework \ v4.0.30319),正是为了这个目的。这个程序是一个控制台程序,最常用的方法如下:生成文件路径的本机代码使用以下命令:复制代码如下: gen安装文件路径卸载文件路径的本机代码使用以下命令复制代码如下: gen卸载文件路径本文主要使用这两种用法。有关该工具的更多参数和介绍,请参考msdn。我们必须为客户端制作一个安装包。我的想法是在安装程序时创建本机映像。我们可以向安装程序添加一个自定义操作来实现这一点。如果你对本文的主题感兴趣,不妨按照以下步骤来尝试一下。1.创建一个任意名称的新解决方案。2.假设我们想为这个winform项目生成的可执行文件生成本机映像,那么向新的解决方案添加一个winform项目。这只是一个演示,所以这个项目没有任何作用。3.将名为NgenInstaller的类库项目添加到此解决方案中,并创建一个新的installerclass

将安装时使用ngeninstaller的功能代码添加到新创建的NgenInstaller类中。4.代码实现非常简单,就是用Process执行ngen程序完成安装。如有必要,让ngen安装这些文件,这些文件通过context . parameters[" NGEN1 | 2 | 3 "]传递。此参数需要在制作安装包的自定义步骤中设置。实现代码:复制代码如下:使用系统;使用系统。收藏品;使用系统。集合。通用;使用系统。ComponentModel使用系统。配置。安装;使用系统。Linq使用系统。运行时. InteropServices使用系统。IO;使用系统。诊断;命名空间NgenInstaller {[RunInstaller(true)]公共分部类NgenInstaller : System。配置。install . installer { public NgenInstaller(){ InitializeComponent();} public override void Install(IDictionary state saver){ ngen file(InstallTypes)。安装);} public override void Uninstall(IDictionary savedState){ ngen file(InstallTypes。卸载);}私有枚举InstallTypes { Install,Uninstall }私有void NgenFile(InstallTypes选项){ string EnvDir=RuntimeEnvironment。GetRuntimeDirectory();字符串路径=路径。Combine(envDir,' ngen . exe ');字符串exePath=上下文。参数[' assembly path '];字符串appDir=路径。GetDirectoryName(exePath);int I=1;do { string FileKey=' ngen ' I;//需要生成本机映像的程序集名称,这是在ngen1的配置中配置的.5,6 if(上下文。parameters . contains key(file key)){ string ngenfilename=context。参数[' ngen ' I];字符串文件全名=路径。Combine(appDir,ngenFileName);字符串参数=(选项==InstallTypes。安装?安装“:”卸载“)”“\”文件全名“\”;进程ngenProcess=新进程();ngenProcess。StartInfo . FileName=ngenPathngenProcess。开始信息。参数=参数;ngenProcess。StartInfo . CreateNoWindow=truengenProcess。StartInfo . WindowStyle=ProcessWindowStyle。隐藏;ngenProcess。start();ngenProcess。waitforeit();我;} else { break} } while(true);}}}这个类库中只有一个类,要完成我们想要的操作。5.最后一步是制作安装程序,并向解决方案中添加安装项目。

添加安装程序后,右键单击安装项目添加项目输出,如下图所示

在添加项目输出的对话框中选择Winforms项目和新建类库。然后右键单击安装项目选择视图-自定义操作,打开自定义操作窗口,添加一个名为“生成本机映像”的自定义操作。添加操作时,选择NgenInstaller项目输出如下图:

然后将自定义操作的名称改为“Ngen生成本机代码”,如下图所示

然后右键单击新创建的自定义操作,选择属性窗口,并在属性窗口的CustomActionData属性中添加要操作的程序集。请注意,CustomActionData是一个键值对,每个键值对都以/开头。

这一步差不多完成了,可以编译整个解决方案。运行安装项目生成的安装包。6.运行安装包。如果一切正常,则生成原生映像。您可以通过ngen display filePath命令验证本机原生效果是否安装正常,如下面的命令行输出所示。

附件是测试项目的源代码。希望这篇文章有用。

版权声明:深入讲解如何使用本地图像生成器(Ngen.exe)工具是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。