0

我正在创建一个将为 COM 注册的 .NET 程序集,以便 Microsoft Excel VBA 可以引用它。

该程序集引用了一个不在 GAC 中的第三方 .NET 程序集(包含一些有用的类),但是,我的程序集的部署存在问题,因为第三方程序集的路径并不总是在相同的位置(这取决于用户的语言环境以及最近安装第三方程序集的时间)。

这意味着在部署我的程序集(使用 REGASM)时,根据安装它的系统,REGASM 有时会失败,因为它找不到我的程序集对第三方程序集的依赖关系。

理想情况下,我想在我的程序集中使用早期绑定,但如果我这样做并且第三方程序集的路径与 Visual Studio 中的引用不同,那么 REGASM 将失败。

我意识到“复制本地”(在 VS 中)可以解决这个问题,但是由于有时会修补第三方程序集,所以我真的不希望将它的过时版本保留在与我的程序集相同的文件夹中。

有没有办法让我不必使用“复制本地”?我想我可以使用第三方程序集的某种动态加载,但仍然可以使用早期绑定?(并且 REGASM 会起作用吗?)

4

1 回答 1

0

为什么不使用“复制本地”作为第一次使用,并在应用程序启动时设置一个例程,该例程通过可能存在较新版本的位置列表并覆盖(或在不可访问时安排覆盖等)本地程序集如果可能的话。

此外,您可能希望为用户提供手动设置应打开 dll 的位置的选项,然后您始终(或按需)检查更新版本。

另一个方面是,如果您的应用程序的功能依赖于某个版本,您为什么要更新新程序集,因为如果他们改变了一个功能或者他们曾经做过什么,您的程序会因为更新而失败,只是一个想法.

于 2010-07-10T22:44:59.817 回答