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