我有一个CLSID,我需要在不同的服务器(即DCS)中实例化这个,就像我的工作机器一样(即MWS)。
现在,如果我使用以下内容:
var type = Type.GetTypeFromCLSID(new Guid(CLSID),
Environment.MachineName, true);
var COMObject = Activator.CreateInstance(type);
var returnValue = COMObject.GetType().InvokeMember(methodName,
flags, null, COMObject, args, argModifiers, null, null);
然后我得到“COM目标没有实现IDispatch”错误。好吧,我知道可能COM目标对象没有IDispatch,所以它失败了。
现在尝试了其他的东西,如果我在VS中添加该COM DLL的引用,那么VS生成互操作程序集然后一切都像常规.net对象创建一样工作,但在这种情况下,该对象实际上是在我的本地生成机器(MWS pc)没有进入我想要的服务器。
伙计们有什么建议我怎么处理这种情况?
提前致谢。
答案 0 :(得分:3)
您可以将目标计算机上的COM +作为代理导出,并将其安装在运行该应用程序的计算机上。
转到目标计算机上的组件服务控制台,右键单击COM +应用程序并选择导出...然后选择应用程序代理单选按钮。这将导致代理作为MSI文件导出到该COM +应用程序。你需要在你的机器上安装它而不是真正的COM +应用程序(这意味着如果它安装在那里就删除它),然后尝试你的互操作。