Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在安装(MSI)结束时运行nGen?_C#_Optimization_Windows Installer_Ngen - Fatal编程技术网

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

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 要提高启动时的感知性能,请查看应用程序中的静态。启动应用程序时,大量静态操作可能会

我希望在安装结束时执行nGen,只是为了提高应用程序第一次启动时的感知性能。我怎么能这么做?是否有一些最佳实践?我是否可以确保nGen始终与.NET Framework一起安装


谢谢

首先,如果他们安装了.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