2011-05-04 58 views
1

创建我创建的COM对象的遗留应用程序(.NET Framework 3.5的)净的COM对象不能从VBS

[ComVisible(true), Guid("...")] 
[InterfaceType(ComInterfaceType.InterfaceIsDual)] 
public interface MyComInterface 
{ 
... 
} 


[ComVisible(true), Guid("...")] 
[ProgId("...")] 
[ClassInterface(ClassInterfaceType.None)] 
public MyComObject: MyComInterface 
{ 
... 
} 

它安装罚款,一切就OK了注册表(的ProgID,CLSID) 我可以创建实例,并从.NET应用程序中使用它:

var t = Type.GetTypeFromProgID("myProgID"); 
var o = Activator.CreateInstance(t); 

但VBS文件

set o = CreateObject("myProgID") 

与错误辩论:0x80070002(文件未找到)

这里有什么可能是错误的?

回答

2

尝试之一:

  1. 安装含有净COM对象到GAC组装。
  2. 或使用regasm/codebase选项指定包含.Net COM对象的程序集的绝对路径。

您也可以尝试将程序集复制到路径上或VBScript文件旁边的某个位置,但我不知道这是否可行。

您还应该考虑使用Fusion日志记录程序集绑定失败 - 这可能会给您一些线索。

+0

谢谢@Kragen。原因是组装我的COM对象referrenced在安装过程中错过了。该程序集必须与我的com对象库位于同一个文件夹中。我的.net客户端应用程序能够创建我的com对象实例,只是因为它引用了该程序集。 – 2011-05-05 06:25:46