这个问题是Marc Gravell对我的问题Create Out-Of-Process COM in C#/.Net ?给出的答案的后续跟进。我已经选择了他提出的解决方案,但现在正在运行另一个问题。
以下是我的情况:
当从Matlab或VB Script实例化COM DataProvider时,COM +机制启动,我可以验证是否可以使用DataProvider的单个实例。
当我尝试从.Net访问COM +托管实例时出现问题。基本上,当COM组件基于.Net DLL时,即使使用延迟加载,.Net也总是会找到DLL并从那里实例化对象,跳过整个COM机制。这是预期的表演,但在我的情况下没有用。
现在提出问题: 是否可以使用COM机制在.Net应用程序中实例化.Net编写的COM组件?
请注意,以下代码不使用COM机制:
Type type = Type.GetTypeFromProgID(progID);
return Activator.CreateInstance(type);
答案 0 :(得分:0)
查看this answer。必须首先将程序集添加到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