我想以同步的方式从vbscript执行.NET dll文件 - 这可能吗?如果是,是否可以执行GAC程序集?
感谢, 奥弗
答案 0 :(得分:14)
我认为您必须首先通过在AssemblyInfo.cs文件中包含ComVisible属性来使.NET程序集可见:
[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代码更灵活。
答案 1 :(得分:2)
VBScript只能从COM对象执行代码,因此您需要为.NET代码创建一个COM包装器,然后您应该能够调用.net代码。
答案 2 :(得分:2)
不直接。
如果.NET程序集作为COM组件公开,那么它可能是。