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

时间:2008-12-10 20:12:50

标签: c# .net com asp-classic

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

3 个答案:

答案 0 :(得分:6)

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

需要考虑的一些问题:

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

关于COM互操作和.Net here的文章非常好(如果过时)。 (文章讨论的很多内容,比如生成类型库,现在都会自动处理。)Microsoft's documentation是最新的,但不是那么详细。

答案 1 :(得分:5)

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

答案 2 :(得分:1)

您可以选择的每个项目都有“COM Accessible”选项。然后,当然,你必须注册程序集才能使用它,但这就是它。


我不得不去寻找C#(我习惯VB.Net),但你可以通过双击解决方案资源管理器中的Properties文件夹找到该选项,选择Application标签,然后点击Assembly Information...按钮。

豫ICP备18024241号-1