我想我可以编译一个C#DLL,然后将它作为COM对象公开,以便它可以从VBscript创建.我只是不确定这样做的步骤......
这样做非常简单.但是有很多地方并不那么简单.这很大程度上取决于您的课程需要做什么,以及您打算如何部署它.
需要考虑的一些问题:
你的类必须有一个无参数的构造函数.
它不能暴露静态方法.
是否在全局程序集缓存中部署COM DLL?如果没有,您将不得不给它一个强名称并使用它进行注册regasm /codebase
.
您是否关心GUID识别类及其接口?如果没有,你可以让regasm
它们分配,但每次(和每个地方)这些课程都会被注册.如果您需要GUID在安装期间保持不变,则需要使用该Guid
属性标记成员.
您打算在.NET和COM之间使用默认的数据类型封送吗?如果没有,您将需要使用该MarshalAs
属性标记属性和方法.
你的班级暴露什么样的COM接口对你有用吗?如果是这样,您将需要处理该InterfaceType
属性.
您的班级是否需要提出或回应事件?如果是这样,那么对您设计类接口的方式有影响.
有一个关于COM互操作和.Net一个很好的(如果日)的文章在这里.(文章讨论的很多内容,比如生成类型库,现在都会自动处理.)而且Microsoft的文档是最新的,但不是那么详细.
您应该使用该regasm
实用程序来注册程序集(就像regsvr32
使用COM服务器一样).然后你可以在COM中使用它.确保它已安装在GAC中.这些东西应该[ComVisible(true)]
可以从COM使用.