我与COM没有太多关系,所以请原谅我的无知。
背景:我正在开发VS 2010中的一个项目。在C#解决方案中集成了一个C#COM DLL,以及一个安装/部署项目 - 安装项目设置为在安装时注册COM .tlb文件
问题:当有人决定安装最新版本的C#应用程序,以及最新的COM DLL时,PC上会出现以前版本的C#应用程序及其COM DLL。当发生这种情况时,它破坏了两个版本的C#应用程序的COM功能。或者这就是我假设发生的事情。
这是典型的COM / DLL-Hell行为吗?卸载两个C#应用程序,然后只重新安装ONE时,一切都恢复正常 - 两者显然无法同时安装。
我尝试更改COM DLL项目的GUID,更改COM DLL项目的AssemblyVersion和AssemblyFileVersion - 所有这些都是混合结果。当我更改这些项目时,应用程序的新安装工作(很棒),但现在旧的C#应用程序没有工作功能。
注意:当COM功能失败时,不会抛出任何错误或异常 - COM调用似乎什么都不做。所以它“默默地”失败了。
我一直在研究这个并尝试各种修改而没有真正的成功......也许我正在考虑这个错误的方法。还有其他人在这方面有更多经验可以给我一些见解吗?
答案 0 :(得分:0)
您可以使用合并模块来安装com对象及其后续版本。这将允许您在同一台计算机上拥有多个版本。来自微软:
合并模块就像是组件的特定版本的快照。应为组件的每个后续版本创建新的合并模块,以避免版本冲突。