C# 如何在安装(MSI)结束时运行nGen?
我希望在安装结束时执行nGen,只是为了提高应用程序第一次启动时的感知性能。我怎么能这么做?是否有一些最佳实践?我是否可以确保nGen始终与.NET Framework一起安装C# 如何在安装(MSI)结束时运行nGen?,c#,optimization,windows-installer,ngen,C#,Optimization,Windows Installer,Ngen,我希望在安装结束时执行nGen,只是为了提高应用程序第一次启动时的感知性能。我怎么能这么做?是否有一些最佳实践?我是否可以确保nGen始终与.NET Framework一起安装 谢谢 首先,如果他们安装了.Net framework,您可以保证他们安装了Ngen。你只需要知道他们安装了哪个版本,因为1.1和2.0版本不同。我过去所做的只是创建一个脚本,我的安装程序在最后调用该脚本,该脚本在所有程序集上运行ngen 要提高启动时的感知性能,请查看应用程序中的静态。启动应用程序时,大量静态操作可能会
谢谢 首先,如果他们安装了.Net framework,您可以保证他们安装了Ngen。你只需要知道他们安装了哪个版本,因为1.1和2.0版本不同。我过去所做的只是创建一个脚本,我的安装程序在最后调用该脚本,该脚本在所有程序集上运行ngen 要提高启动时的感知性能,请查看应用程序中的静态。启动应用程序时,大量静态操作可能会导致大量开销
另外,在EXE中只考虑主窗体和单独的DLL中的所有其他窗体。这不仅提高了性能,而且有助于确保将视图与数据分开
最后,如果您设置了NGENing,请查看MSI中运行自定义操作的帮助。您应该能够设置自定义操作来执行所需操作。您可以使用自定义安装程序操作来更改程序集。以下链接对此进行了更详细的解释:
我还记得关于Paint.NET安装程序的一次很好的讨论(其中包括.NET Framework引导、预JITting等),但我现在找不到它。如果我再次看到这篇文章,我会编辑它。正如“Micah”所说的,是的,你会发现NGen安装了.Net Framework 看一下WIX3.5安装程序示例,了解如何在安装过程中对程序集进行加密 我希望这对你有帮助。:
谢谢你的信息,@Wouter。我已经更新了dotnetperls链接(它们必须已移动到MVC路由,而不是重定向旧URL)。bobpowell.net链接看起来还不错-你能重试吗?第二个链接目前重定向到恶意软件站点。您好@JimFoye非常感谢您的提醒。我已经删除了链接,希望它不会给你带来任何问题。
>ngen install c:\myfiles\MyAssembly.exe