2009-03-01 79 views

回答

14

我认为你必须首先使.NET程序集COM可见通过在AssemblyInfo.cs文件的标记有ComVisible特性属性:

[ComVisible(true)] 

请参阅MSDN上此页:Packaging an Assembly for COM

然后在VBScript中,您可以通过同一个访问这些组件意味着你访问COM组件,即使用的CreateObject或的Server.CreateObject为:

Set testObj = CreateObject("MyNamespace.MyType") 

余吨彗星GAC甚至可能是强制性的从VBScript访问它,但我没有这样做,所以我不知道。

你为什么想在VBScript中做到这一点?为什么不制作一个.NET控制台应用程序来完成你的VBScript所要做的事情?由于该DLL已经在.NET上,这应该不成问题,对吧?


编辑:另一种方式来做到这一点可能是创建一个控制台EXE而不是一个DLL(或包装了一个DLL的EXE),您可以从VBScript调用像一个正常的可执行程序和审查返回结果。取决于许多因素,这可能比维护COM代码更灵活。

+0

像往常一样我被迫去那个:-) 有一个写在vbscript中的项目需要扩展。 扩展名不能用vbscript完成。 – ofer 2009-03-01 16:43:28

2

的VBScript只能从COM对象执行代码,所以你需要创建一个COM包装为您的.NET代码,那么你应该能够调用.NET代码。

2

不是直接。

如果.NET程序集是作为COM组件公开的,那么它可能是。