打开Excel自动更新(Excel-DNA)XLL

Sam*_*uel 6 c# deployment updates xll excel-dna

我正在使用Excel-DNA和C#开发Excel XLL加载项.加载项名为MyAddIn.xll.加载项已保存到用户本地计算机,并已通过以下过程安装/添加到Excel:

Excel选项 - >加载项 - >管理Excel加载项 - >然后添加MyAddIn.xll.

我现在想向所有用户推出MyAddIn.xll的更新.我正在使用像Salt这样的部署工具.但是,似乎这需要在用户计算机上关闭Excel.

有没有办法可以将新的xll推送到用户机器,当他们打开Excel时,让他们在重启Excel时进行更改?

谢谢!

Gov*_*ert 9

.xll文件将始终由Excel锁定,因此在加载加载项时无法更新该文件.您可以构建加载项,以便.xll不会随更新而更改,但您使用的.dll文件会发生更改.

Excel-DNA支持两种方法:

  1. .dna文件可以重定向到子目录,并且可以在加载加载项时更新根.dna文件.所以你可能有:

    • \ AddInRoot\MyAddIn.xll
    • \ AddInRoot\MyAddIn.dna
    • \ AddInRoot \版本1\MyAddInImpl.dna
    • \ AddInRoot \版本1\MyAddInImpl.dll
    • \ AddInRoot \版本2\MyAddInImpl.dna
    • \ AddInRoot \版本2\MyAddInImpl.dll

    在MyAddIn.dna中你有 <DnaLibrary ...> <ExternalLibrary Path="Version1\MyAddInImpl.dna" /> </DnaLibrary>

    加载加载项后,您可以将MyAddIn.dna替换为引用新版本2目录的新版本.

  2. Excel-DNA支持加载.dll库文件而不锁定.dll.所以你可以: <DnaLibrary ...> <ExternalLibrary Path="MyFunctions.dll" LoadFromBytes="true" /> </DnaLibrary>

    然后,即使加载项正在运行,您也可以替换MyFunctions.dll.

在这两种情况下,您无需重新打开Excel以加载新版本,您只需文件 - >打开.xll文件即可重新加载(或调用xlfRegisterApplication.RegisterXLL从代码中).