我正在开发一个使用Excel和C#的Excel外接程序.外接程序称为MyAddIn.xll。外接程序已保存到用户本地计算机,并已通过以下过程安装/添加到Excel中:
Excel选项->外接程序->管理Excel外接程序->然后添加MyAddIn.xll。
现在,我想向我的所有用户推出MyAddIn.xll的更新。我正在使用一个部署工具,如盐类。但是,这似乎需要关闭用户计算机上的Excel。
有什么方法可以在用户打开Excel时将新的xll推送给他们,并让他们在重新启动Excel时进行更改?
谢谢!
发布于 2015-05-21 15:07:20
.xll文件将始终被Excel锁定,因此在加载外接程序时无法更新该文件。您可能可以构造您的外接程序,以便.xll不会随更新而更改,但是您使用的.dll文件会发生更改。
有两种Excel支持的方法可以做到这一点:
- \AddInRoot\MyAddIn.xll
- \AddInRoot\MyAddIn.dna
- \AddInRoot\Version1\MyAddInImpl.dna
- \AddInRoot\Version1\MyAddInImpl.dll
- \AddInRoot\Version2\MyAddInImpl.dna
- \AddInRoot\Version2\MyAddInImpl.dll在MyAddIn.dna中,你有<DnaLibrary ...> <ExternalLibrary Path="Version1\MyAddInImpl.dna" /> </DnaLibrary>
加载外接程序时,可以将MyAddIn.dna替换为引用新Version2目录的新版本。
<DnaLibrary ...> <ExternalLibrary Path="MyFunctions.dll" LoadFromBytes="true" /> </DnaLibrary>
然后,即使在外接程序运行时,您也可以替换MyFunctions.dll。在这两种情况下,您不需要重新打开Excel来加载新版本,只需文件->打开.xll文件,它就会重新加载(或者从代码中调用xlfRegister或Application.RegisterXLL )。
https://stackoverflow.com/questions/30370965
复制相似问题