.net - 从具有不同 GUID 的 .Net 引用 COM+

标签 .net com wrapper

我们有一个引用 COM+ 组件的项目(用 VB6 编写)。通过“添加引用”将组件添加到我们的 .Net 解决方案中。 这很好用,甚至 intellisense 也能用。

有时,组件的接口(interface)(兼容性)被破坏,我们的 .Net 代码不再工作。添加了具有特定 GUID 的组件,该 GUID 不再注册。

问题: 是否可以像我们习惯的那样调用 COM+ 组件(不允许反射),而不必更新我们的 .Net 解决方案中的引用。例如,根据文件名为 COM+ 组件创建包装器?

问候,

最佳答案

不,.NET(以及任何 native 程序)将无法在不知道正确 GUID 的情况下实例化 COM 组件。

最好的办法是首先防止该组件更改 GUID,在组件项目中打开二进制兼容性 并维护接口(interface)以保持兼容。一旦你破坏了接口(interface)兼容性,你就必须将组件重新添加到你的程序中,以便创建一个新的有效引用。这并不是因为 .NET 很笨,而是因为一旦破坏了接口(interface)兼容性,就需要重新编译客户端。

关于.net - 从具有不同 GUID 的 .Net 引用 COM+,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3298791/

相关文章:

c# - 如何使用 Entity Framework 将现有实体添加为新实体

regex - 如何检查文件名是否与通配符模式匹配

.net - 如何在 Mono 中获取串口的 "friendly"名称并保持跨平台

c++ - 设计一个好的 C++ 包装类来包装多种功能

c++ - 如何创建用 C++ 编写的 protected 程序的库/插件/API?

c++ - 使用值包装器和 operator() 重载来简化 getter/setter 设计 : a dangerous practice?

.net - Windows 10 拖放

.net - 使用 ClassInterfaceType.AutoDual 真的是个坏主意,即使使用 VB6?

c++ - 为什么控制面板的 PIDL 会有所不同?

c++ - 使用 COM 传递数组?