我以前没有使用NGen,但现在我需要提高我的WPF应用程序的启动性能。据我所知,常见的情况是在应用程序安装期间运行ngen。但我的应用程序是用于公司内部需要的,并且没有安装程序(这只会使事情变得复杂)。
还有没有其他方法可以运行ngen?如果我在应用程序第一次启动时执行此操作,该怎么办?为此,我是否需要管理员权限?
发布于 2012-06-21 04:20:34
根据MSDN (注释下面的第一行),您需要拥有管理权限才能运行ngen。将您的应用程序打包到一个简单的MSI中可能会更容易,因为我不认为您可以从应用程序内部提升特权来运行ngen。您必须更改清单文件,这将导致您的应用程序在每次启动时都需要管理权限。
发布于 2013-12-18 17:39:47
如果你的应用目标是Windows4.5或更高版本,并在Windows8或更高版本上运行,那么你也许能够利用Auto NGEN。Auto NGEN是在用户机器空闲时运行的维护任务。维护任务会在“合格的”程序集上自动运行NGEN。
对于您的场景,您需要将应用程序安装到GAC中。在应用程序首次启动时,.NET运行时会生成一个使用日志,并记录您的应用程序程序集。自动NGEN任务只是消耗这些日志,并为您运行NGEN。因此,通常情况下,在维护任务运行完成后,您将获得更好的启动性能。(我认为它通常运行在凌晨3点)
有关信息,请参阅以下链接:http://eknowledger.wordpress.com/2012/05/04/clr-4-5-net-framework-kernel-improvements/
请注意,就像NGEN一样,将程序集安装到GAC需要管理员权限。:)因此,您可能更喜欢创建一个安装程序并在安装时启用NGEN,如上面的答案所述。
https://stackoverflow.com/questions/11124401
复制相似问题