clickonce - 是否可以预先生成NGen镜像,以便客户不必这样做?

标签 clickonce ngen

通过ClickOnce分发的我们的应用平均需要耗时10.8秒来启动。在.exe(ClickOnce将其安装到的目录中)上运行ngen后,它平均在 6.4秒中启动。显然,这是一个巨大的加速( 40%),如果可能,我想利用ngen-ification。

罗恩对Is it possible to use NGen with ClickOnce deployment?的回答显示了如何在客户的计算机上完成该操作,假设我猜他正在运行Windows XP,因为它希望我的Windows 7操作系统具有管理员权限,因此这似乎不是通用解决方案。

此外,ngen在我的机器上花费 40秒钟来编译属于该应用程序的所有程序集。

因此,理想情况下,我想在构建过程的过程中为所有(主要)体系结构在应用程序ngt_strong之前预生成ngen,以便可以将其交付给客户,而无需用户接受“可以以管理员身份执行? ”弹出,然后等待40秒钟。

那可能吗?

最佳答案

如果没有Windows 7上的管理访问权限,则无法执行此操作。

问题不在于本地镜像的实际ngen生成,而是安装到需要管理权限的本地镜像缓存(C:\windows\assembly\nativeImages_v#xxxxxxxxx)中。因此,即使您找到了一种为所有目标体系结构预生成 native 镜像的方法,也将无法将其放入适当的位置,以便运行时考虑使用它们。

您不能只将它们与常规二进制文件并排放置,因为这样就无法正确管理它们-进行某些安全策略更改,应用.net Framework更新或进行其他更改时,您会遇到麻烦是对使本地镜像无效并且需要运行“ngen update”命令的引用程序集进行的。微软目前似乎不支持在ClickOnce部署中使用ngen的用例。

关于clickonce - 是否可以预先生成NGen镜像,以便客户不必这样做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10100248/

相关文章:

visual-studio - 发布时如何自动包含PDB文件?

c# - 将一些信息与可执行文件捆绑在一起?

.net - 使用 VBScript 启动 ClickOnce 部署的 Windows 应用程序

c# - 在 C# winforms 中使用 Process.Start() 运行时,NGEN Display 返回与 Elevated CMD 不同的结果

未加载使用NGEN创建的.NET native 镜像

installation - Visual Studio 2012 安装 : ngen hangs/does nothing

c# - x64 系统上的 x86 应用程序使用哪个 ngen?

.net - ngen 是否用于将 .NET 代码编译成在运行代码时不需要安装 .NET 框架的二进制文件?

visual-studio-2010 - 不使用 Clickonce 安装 VSTO

c# - 从 Click Once 应用程序获取源代码