我们有一个引用 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/