我正在使用Excel-DNA和C#开发Excel XLL加载项。加载项名为MyAddIn.xll。加载项已保存到用户本地计算机,并已通过以下过程安装/添加到Excel:
Excel选项 - >加载项 - >管理Excel加载项 - >然后添加MyAddIn.xll。
我现在想向所有用户推出MyAddIn.xll的更新。我正在使用像Salt这样的部署工具。但是,似乎这需要在用户计算机上关闭Excel。
有没有办法可以将新的xll推送到用户机器,当他们打开Excel时,让他们在重启Excel时进行更改?
谢谢!
答案 0 :(得分:9)
.xll文件将始终被Excel锁定,因此在加载加载项时无法更新该文件。您可以构建加载项,以便.xll不会随更新而更改,但您使用的.dll文件会发生更改。
Excel-DNA支持两种方法:
.dna文件可以重定向到子目录,并且可以在加载加载项时更新根.dna文件。所以你可能有:
在MyAddIn.dna中你有
<DnaLibrary ...>
<ExternalLibrary Path="Version1\MyAddInImpl.dna" />
</DnaLibrary>
加载加载项后,您可以将MyAddIn.dna替换为引用新版本2目录的新版本。
Excel-DNA支持加载.dll库文件而不锁定.dll。所以你可以:
<DnaLibrary ...>
<ExternalLibrary Path="MyFunctions.dll" LoadFromBytes="true" />
</DnaLibrary>
然后,即使加载项正在运行,您也可以替换MyFunctions.dll。
在这两种情况下,您无需重新打开Excel即可加载新版本,只需文件 - >打开.xll文件即可重新加载(或从中调用xlfRegister
或Application.RegisterXLL
码)。