我正在使用Excel-DNA和C#开发Excel XLL加载项。该加载项称为MyAddIn.xll。加载项已保存到用户本地计算机,并且已通过以下过程将其安装/添加到Excel:
Excel选项->加载项->管理Excel加载项->,然后添加MyAddIn.xll。
现在,我想向所有用户推送MyAddIn.xll的更新。我正在使用诸如Salt的部署工具。但是,这似乎要求在用户计算机上关闭Excel。
有没有一种方法可以在用户打开Excel时将新的xll推送到用户计算机,并在他们重新启动Excel时让更改发生?
谢谢!
最佳答案
.xll文件将始终被Excel锁定,因此在加载加载项时无法更新该文件。您可能能够对外接程序进行结构设计,以使.xll不会随更新而更改,但您使用的.dll文件却会更改。
Excel-DNA支持两种方法来执行此操作:
在MyAddIn.dna中,
<DnaLibrary ...> <ExternalLibrary Path="Version1\MyAddInImpl.dna" /></DnaLibrary>
加载外接程序时,可以用引用新Version2目录的新版本替换MyAddIn.dna。
<DnaLibrary ...> <ExternalLibrary Path="MyFunctions.dll" LoadFromBytes="true" /></DnaLibrary>
这样,即使外接程序正在运行,您也可以替换MyFunctions.dll。
在这两种情况下,您都不需要重新打开Excel来加载新版本,只需打开File-> Open .xll文件,它就会重新加载(或从代码中调用
xlfRegister
或Application.RegisterXLL
)。