将 NGen 与 Wix 工具集一起用于 AddIn Express Excel 插件
Using NGen with Wix Toolset for AddIn Express Excel Addin
我想提高使用 AddIn Express 开发的 .NET Excel 插件的第一个 运行 性能。
加载项 运行 在各种任务的第一次执行期间缓慢的原因是因为 JIT 花费时间将 MSIL 转换为本机可执行机器代码。
补救此问题的标准方法是 运行 从安装程序在程序集中使用 NGen 来预生成本机代码。
我为我的安装程序使用 Wix 工具集,并尝试正确设置,但我仍然没有摆脱初始执行缓慢的问题,所以我想知道我是否需要做一些具体的事情才能得到这个使用 Addin Express Excel 插件。我的插件安装到 %LocalAppData% 文件夹以防信息很重要。
我按照这里的指南操作:
http://wixtoolset.org/documentation/manual/v3/howtos/files_and_registry/ngen_managed_assemblies.html
http://wixtoolset.org/documentation/manual/v3/xsd/netfx/nativeimage.html
在我的 Wix 中有这样的东西 xml:
<netfx:NativeImage Id="ngen_MyExcelAddin.dll" Platform="all" Priority="0" AppBaseDirectory="TARGETDIR" />
我的安装程序构建和安装都很好,但初始执行缓慢的问题并没有消失,这让我相信它仍在使用 JIT。我最初的想法是我可能需要指定 AssemblyApplication 属性,但我已尝试将其设置为各种 AddinExpress dll(adxloader64.dll、adxloader.dll、AddinExpress.XL.2005.dll, AddinExpress.MSO.2005.dll) 没有成功。任何帮助将不胜感激。
阅读其他论坛上的一些评论后,似乎 NGen 需要一个需要管理员权限的安装程序,并且还需要在 GAC 中安装 dll。我的安装程序适用于当前用户,不需要管理员访问权限,因此不适合使用 NGen。
相反,我做了类似的事情,方法是在首次加载插件时使用此 link 中的代码在后台线程中预编译大部分方法:
http://www.codeproject.com/Articles/31316/Pre-compile-pre-JIT-your-assembly-on-the-fly-or-tr
我想提高使用 AddIn Express 开发的 .NET Excel 插件的第一个 运行 性能。
加载项 运行 在各种任务的第一次执行期间缓慢的原因是因为 JIT 花费时间将 MSIL 转换为本机可执行机器代码。
补救此问题的标准方法是 运行 从安装程序在程序集中使用 NGen 来预生成本机代码。
我为我的安装程序使用 Wix 工具集,并尝试正确设置,但我仍然没有摆脱初始执行缓慢的问题,所以我想知道我是否需要做一些具体的事情才能得到这个使用 Addin Express Excel 插件。我的插件安装到 %LocalAppData% 文件夹以防信息很重要。
我按照这里的指南操作: http://wixtoolset.org/documentation/manual/v3/howtos/files_and_registry/ngen_managed_assemblies.html http://wixtoolset.org/documentation/manual/v3/xsd/netfx/nativeimage.html
在我的 Wix 中有这样的东西 xml:
<netfx:NativeImage Id="ngen_MyExcelAddin.dll" Platform="all" Priority="0" AppBaseDirectory="TARGETDIR" />
我的安装程序构建和安装都很好,但初始执行缓慢的问题并没有消失,这让我相信它仍在使用 JIT。我最初的想法是我可能需要指定 AssemblyApplication 属性,但我已尝试将其设置为各种 AddinExpress dll(adxloader64.dll、adxloader.dll、AddinExpress.XL.2005.dll, AddinExpress.MSO.2005.dll) 没有成功。任何帮助将不胜感激。
阅读其他论坛上的一些评论后,似乎 NGen 需要一个需要管理员权限的安装程序,并且还需要在 GAC 中安装 dll。我的安装程序适用于当前用户,不需要管理员访问权限,因此不适合使用 NGen。
相反,我做了类似的事情,方法是在首次加载插件时使用此 link 中的代码在后台线程中预编译大部分方法: http://www.codeproject.com/Articles/31316/Pre-compile-pre-JIT-your-assembly-on-the-fly-or-tr