从.NET COM客户端连接到.NET COM应用程序

时间:2011-09-27 19:38:54

标签: .net com com-interop

我遇到的问题应该是脑死亡的简单。

我在.NET中编写一个COM客户端,在编写服务器代码时最终会与旧式C ++ COM接口通信。与此同时,我编写了一个未签名的WPF .NET应用程序并实现了相同的接口 - 相同的IID,不同的ProgID和CLSID - 所以我将拥有一个可以测试的线束。理论上,我需要做的就是将我的引用从一个名称空间切换到另一个名称空间,并在 new 语句中更改具体类,其他所有内容将保持不变。我想象当我CoCreate CLSID时,它将使用它的GUI启动应用程序,我的客户端可以从那里调用OLE自动化样式并在屏幕上看到效果。

只有那不是正在发生的事情。在我的客户端应用程序的添加引用中,我在COM列表中看到了我的测试工具的类型库,但它拒绝让我添加引用,因为它检测到它是.NET类型库并且需要.NET引用。如果我将它作为项目引用或作为EXE浏览它,它显然会在进程中加载​​EXE,就好像它是一个DLL并使用COM类而不实际激活它。

我认为我使用.NET COM应用程序所做的任何事情都与C ++ COM应用程序类似。我不确定我的选择是什么。我是否面临严格的限制或是否存在影响此行为的[属性]? (事实上​​,自从我真正认真地详细介绍了COM互操作以来已经有几年了,我感到有一种不安的感觉,这是我以后忘记的非常简单的事情。)

Lupestro

1 个答案:

答案 0 :(得分:1)

听起来你需要的是进程外COM对象。您可以在.Net中创建COM +对象,然后将它们实例化为out-of-proc。 This article解释了如何做到这一点。