用Excel自动更新(Excel-DNA)XLL

时间:2015-05-21 10:21:38

标签: c# deployment updates excel-dna xll

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

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

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

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

谢谢!

1 个答案:

答案 0 :(得分: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。

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