我没有与 COM 合作太多,所以请原谅我的无知。
背景:我正在开发 VS 2010 中的一个项目。C# 解决方案中集成了一个 C# COM DLL,还有一个安装/部署项目 - 安装项目设置为在安装时注册 COM .tlb 文件。
问题:当有人决定安装最新版本的 C# 应用程序并因此安装最新的 COM DLL 时,PC 上存在 C# 应用程序的早期版本及其 COM DLL。发生这种情况时,它破坏了 C# 应用程序的两个版本的 COM 功能。或者这就是我假设发生的情况。
这是典型的 COM/DLL 地狱行为吗?当两个 C# 应用程序都被卸载,然后只重新安装一个,一切都恢复正常 - 显然不能同时安装。
我已经尝试更改 COM DLL 项目的 GUID,更改 COM DLL 项目的 AssemblyVersion 和 AssemblyFileVersion - 所有这些都具有不同的结果。当我更改这些项目时,应用程序的新安装工作(很好),但现在旧的 C# 应用程序没有工作功能。
注意:当 COM 功能失败时不会引发错误或异常 - COM 调用似乎什么都不做。所以它“默默地”失败了。
我一直在研究这个并尝试进行各种修改,但没有真正成功……也许我想错了。还有其他人对此有更多经验可以给我一些见解吗?