【问题标题】:.Net Com object can't be created from vbs.Net Com 对象不能从 vbs 创建
【发布时间】:2011-08-18 06:38:36
【问题描述】:

我为旧版应用程序创建了 com 对象(.net framework 3.5)

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


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

它安装正常,注册表中的一切正常(progid,clsid) 我可以创建实例并从 .net 应用程序中使用它:

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

但是vbs文件

set o = CreateObject("myProgID")

争论错误:0x80070002(找不到文件)

这里有什么问题?

【问题讨论】:

    标签: .net com com-interop legacy


    【解决方案1】:

    试试:

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

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

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

    【讨论】:

    • 谢谢你,@Kragen。原因是在安装过程中错过了我引用的 com 对象的程序集。该程序集必须与我的 com 对象库位于同一文件夹中。我的 .net 客户端应用程序能够创建我的 com 对象实例,因为它引用了该程序集。
    猜你喜欢
    • 2015-06-20
    • 2011-03-05
    • 1970-01-01
    • 2013-07-19
    • 2018-12-31
    • 2013-04-10
    • 1970-01-01
    • 2017-10-30
    • 2011-06-20
    相关资源
    最近更新 更多