如何从vbScript调用.NET代码(C#/ vb.net)?

Mic*_*yor 6 .net c# com asp-classic

我想我可以编译一个C#DLL,然后将它作为COM对象公开,以便它可以从VBscript创建.我只是不确定这样做的步骤......

Rob*_*ney 6

这样做非常简单.但是有很多地方并不那么简单.这很大程度上取决于您的课程需要做什么,以及您打算如何部署它.

需要考虑的一些问题:

  • 你的类必须有一个无参数的构造函数.
  • 它不能暴露静态方法.
  • 是否在全局程序集缓存中部署COM DLL?如果没有,您将不得不给它一个强名称并使用它进行注册regasm /codebase.
  • 您是否关心GUID识别类及其接口?如果没有,你可以让regasm它们分配,但每次(和每个地方)这些课程都会被注册.如果您需要GUID在安装期间保持不变,则需要使用该Guid属性标记成员.
  • 您打算在.NET和COM之间使用默认的数据类型封送吗?如果没有,您将需要使用该MarshalAs属性标记属性和方法.
  • 你的班级暴露什么样的COM接口对你有用吗?如果是这样,您将需要处理该InterfaceType属性.
  • 您的班级是否需要提出或回应事件?如果是这样,那么对您设计类接口的方式有影响.

有一个关于COM互操作和.Net一个很好的(如果日)的文章在这里.(文章讨论的很多内容,比如生成类型库,现在都会自动处理.)而且Microsoft的文档是最新的,但不是那么详细.


Meh*_*ari 5

您应该使用该regasm实用程序来注册程序集(就像regsvr32使用COM服务器一样).然后你可以在COM中使用它.确保它已安装在GAC中.这些东西应该[ComVisible(true)]可以从COM使用.