我想在安装结束时执行 nGen,只是为了提高我的应用程序首次启动时的感知性能。我怎么能那样做?有一些最佳实践吗?我可以确定 nGen 始终与 .NET Framework 一起安装吗?
谢谢!
我想在安装结束时执行 nGen,只是为了提高我的应用程序首次启动时的感知性能。我怎么能那样做?有一些最佳实践吗?我可以确定 nGen 始终与 .NET Framework 一起安装吗?
谢谢!
您可以使用自定义安装程序操作来生成您的程序集。以下链接更详细地解释了这一点:
http://www.dotnetperls.com/ngen
我还记得关于 Paint.NET 安装程序(包括 .NET Framework 引导、预 JITting 等)的一个很好的讨论,但我现在找不到它。如果我再次遇到它,我会编辑这篇文章。
首先“是”,您可以保证,如果他们安装了 .Net 框架,他们就拥有 Ngen。您唯一需要知道的是他们安装了哪个版本,因为它在 1.1 和 2.0 之间是不同的。我过去所做的只是创建了一个我的安装程序在最后调用的脚本,它在所有程序集上运行 ngen。
要提高启动时的感知性能,请查看应用程序中的静态。启动应用程序时,大量静态因素会导致大量开销。
此外,请考虑在 EXE 中仅包含主窗体,而在单独的 DLL 中包含其他所有内容。这不仅提高了性能,而且有助于保证您将视图与数据分开。
最后,如果您设置了 NGENing,请查看有关在您的 MSI 中运行自定义操作的帮助。您应该能够设置自定义操作来执行您想要的操作。
正如“Micah”所说,是的,您会发现 NGen 与 .Net Framework 一起安装。
查看 WiX 3.5 安装程序示例如何在安装期间对您的程序集进行 NGen。
我希望这能帮到您。
>ngen install c:\myfiles\MyAssembly.exe