1

我有一个安装到 GAC 的 .NET DLL,因为它被多个应用程序使用。

其中之一是 Excel 工作簿,它使用 .NET 的 COM 互操作工具引用 DLL。COM tlb 文件安装到应用程序目录。

这一切都很好,除非安装了更新版本的 DLL。在某些 PC 上,工作簿中的 COM 引用中断(显示为“缺失”)。运行相关宏会使 Excel 崩溃。这可以通过取消勾选 VBA 编辑器中缺少的引用并重新添加对 DLL 的引用来解决,但我希望我的用户不必每次打开它时都这样做。

所有相关的对象和方法都具有不变的签名,并用不变的 GUID 进行装饰。

任何想法为什么参考中断?

编辑:在对注册表进行深入调查之后,看起来 COM 注册在安装时没有正确进行。但是,这并没有显示为安装失败。不过,仍然没有找到根本原因。

4

1 回答 1

0

我们在这里也遇到了问题;因此,我们的补丁程序总是运行 gacutil.exe /cdl 来清除下载缓存。该解决方案对我们没有意义,因为我们没有通过浏览器下载我们的程序集,但它有所帮助。要查看是否对您有帮助,请尝试运行 gacutil.exe /l 以查看您的程序集是否在下载缓存中。

另外,请注意,由于某种原因,gacutil 没有随框架重新分发,因此您首先需要将其复制到相关系统中。

于 2009-02-17T12:21:16.443 回答