如何访问托管在.Net中COM+服务器中的.Net COM对象?

如何访问托管在.Net中COM+服务器中的.Net COM对象?,com,com+,Com,Com+,这个问题是Marc Gravell对我的问题的回答的后续问题。我选择了他提出的解决方案,但现在我遇到了另一个问题 以下是我的情况: 我用C实现了一个数据提供者COM组件 此组件托管在COM中+ 服务器应用程序,使多个 进程可以访问相同的 数据提供程序的实例 可以通过COM访问数据提供程序的进程类型有Matlab、VB脚本和.Net应用程序。 当从Matlab或VB脚本实例化COM数据提供程序时,COM+机制起作用,我可以验证是否可以使用数据提供程序的单个实例 当我试图从.Net访问COM+托管实

这个问题是Marc Gravell对我的问题的回答的后续问题。我选择了他提出的解决方案,但现在我遇到了另一个问题

以下是我的情况:

我用C实现了一个数据提供者COM组件 此组件托管在COM中+ 服务器应用程序,使多个 进程可以访问相同的 数据提供程序的实例 可以通过COM访问数据提供程序的进程类型有Matlab、VB脚本和.Net应用程序。 当从Matlab或VB脚本实例化COM数据提供程序时,COM+机制起作用,我可以验证是否可以使用数据提供程序的单个实例

当我试图从.Net访问COM+托管实例时,问题就出现了。基本上,当COM组件基于.Net DLL时,即使是延迟加载,.Net似乎总是找到DLL并从那里实例化对象,跳过整个COM机制。这是预期的表现,但它没有帮助在我的情况下

现在回答问题: 是否可以使用COM机制在.Net应用程序中实例化.Net编写的COM组件

请注意,以下代码不使用COM机制:

    Type type = Type.GetTypeFromProgID(progID);
    return Activator.CreateInstance(type);
调查。必须首先将程序集添加到GAC,然后必须使用regsvcs实用程序创建COM+应用程序。否则,.Net根本不会查看COM+目录:

"c:\Windows\Microsoft.NET\Framework\v4.0.30319\regsvcs.exe" MyObject.dll
"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\gacutil.exe" /i MyObject.dll