我想提高使用AddIn Express开发的.NET Excel Addin的首次运行性能。
在首次执行各种任务期间,插件运行缓慢的原因是JIT花费时间将MSIL转换为本机可执行机器代码。
解决此问题的标准方法是从安装程序在程序集上运行NGen以预生成本机代码。
我使用Wix Toolset作为我的安装程序,并尝试正确设置,但我仍然没有摆脱缓慢的初始执行问题所以我想知道是否有一些特定的东西我需要做以使这个工作与Addin Express Excel Addins。我的插件安装到%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)没有成功。任何帮助将不胜感激。
答案 0 :(得分:2)
在阅读其他论坛上的一些评论之后,似乎NGen需要一个需要管理员权限的安装程序,以及需要在GAC中安装dll的安装程序。我的安装程序适用于当前用户,不需要管理员访问权限,因此不适合使用NGen。
相反,当使用此链接中的代码首次加载addin时,我通过预编译后台线程中的大多数方法来做类似的事情: http://www.codeproject.com/Articles/31316/Pre-compile-pre-JIT-your-assembly-on-the-fly-or-tr