如何在安装(MSI)结束时运行nGen?

11

我希望在我的安装程序结束时执行nGen以提高应用程序第一次启动的感知性能。我该怎么做?有什么最佳实践吗?我可以确信nGen始终与.NET Framework一起安装吗?

谢谢!

5个回答

8
您可以使用自定义安装程序操作来ngen您的程序集。以下链接详细介绍了此过程: http://www.dotnetperls.com/ngen 我也记得有一个关于Paint.NET安装程序(包括.NET Framework引导程序、预JIT等)的好讨论,但我现在找不到它了。如果我再次找到它,我会编辑这篇文章。

1
感谢提供信息,@Wouter。我已经更新了dotnetperls链接(他们可能已经转移到MVC路由而没有重定向旧的URL)。bobpowell.net链接似乎仍然正常 - 你能再试一次吗? - Dave R.
第二个链接目前重定向到恶意软件网站。 - Jim Foye
嗨@JimFoye,非常感谢您的提醒。我已经删除了链接,希望这不会给您带来任何问题。 - Dave R.

1
首先,“是的”,如果他们安装了.Net框架,那么可以保证他们有Ngen。你需要知道的唯一一件事就是他们安装了哪个版本,因为1.1和2.0之间是不同的。我过去所做的就是简单地创建一个脚本,我的安装程序在最后调用它,然后在所有程序集上运行ngen。

0

为了提高启动时的感知性能,请检查应用程序中的静态内容。大量的静态内容可能会在启动应用程序时导致显著的开销。

此外,考虑只将主窗体放入EXE文件中,并将其他所有内容放入单独的DLL文件中。这不仅可以提高性能,还有助于确保将视图与数据分离。

最后,如果您决定进行NGENing,请查看有关在MSI中运行自定义操作的帮助文档。您应该能够设置一个自定义操作来实现您想要的效果。


0
正如'Micah'所说,是的,你会发现NGen已经随着.Net Framework一起安装了。
看一下WiX 3.5安装程序示例,如何在安装过程中使用NGen生成你的程序集。 NGen:创建安装项目 希望这能对你有所帮助。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接