是否有可能预先生成NGEN的图像,使客户不必?(Is it possible to pre-gene

2019-09-16 11:24发布

我们的应用程序,通过ClickOnce的分布,平均需要10.8秒启动。 运行后ngen的.exe文件(在安装的ClickOnce它到目录),它的平均6.4秒启动。 这显然是一个巨大的增速(40%),我想如果可能的话尽量使用NGEN-ification的。

罗恩的答案是否有可能使用NGEN与ClickOnce部署? 将展示如何在客户机器上完成,假设我猜他运行Windows XP,因为它想在我的Windows 7管理员权限 ,这样似乎并不像一个通用的解决方案。

此外,NGEN发生在我的盒子40秒编译属于该应用程序的所有组件。

所以,理想情况下,我想预先NGEN我们的应用程序为所有(主要)架构作为构建过程的一部分 ,因此它可以被发送给客户,而用户不必接受“OK执行作为管理员?” 弹出,然后等待40秒。

那可能吗?

Answer 1:

而对Windows 7的管理访问你不能做到这一点。

问题不在于实际NGEN生成的本机映像,而是安装到本机映像缓存(C:\ WINDOWS \装配\ nativeImages_v#XXXXXXXXX)需要管理权限。 所以,即使你找到了一种方法,以预先生成所有你不能够让他们进入了运行时的适当位置考虑使用它们的目标架构的原生图像。

你不能只把它们并排侧与正常的二进制文件,因为那么他们就不会得到适当的管理 - you'd陷入困境时,某些安全策略更改,.NET框架的更新应用或其他变化都使得不再具有原生影像,并且需要一个“NGEN更新”命令来运行引用的程序集制造。 微软只是似乎并不支持在这个时候与ClickOnce部署NGEN的用例。



文章来源: Is it possible to pre-generate NGen images so customers don't have to?