我有一个安装到 GAC 的 .NET DLL,因为它被多个应用程序使用。
其中之一是 Excel 工作簿,它使用 .NET 的 COM 互操作工具引用 DLL。COM tlb 文件安装到应用程序目录。
这一切都很好,除非安装了更新版本的 DLL。在某些 PC 上,工作簿中的 COM 引用中断(显示为“缺失”)。运行相关宏会使 Excel 崩溃。这可以通过取消勾选 VBA 编辑器中缺少的引用并重新添加对 DLL 的引用来解决,但我希望我的用户不必每次打开它时都这样做。
所有相关的对象和方法都具有不变的签名,并用不变的 GUID 进行装饰。
任何想法为什么参考中断?
编辑:在对注册表进行深入调查之后,看起来 COM 注册在安装时没有正确进行。但是,这并没有显示为安装失败。不过,仍然没有找到根本原因。