我的COM类型库.tlb
(由regasm
OF .NET v4+
生成)的类型不完整我不确定这是因为cppc.exe
派生了错误的标题对于它或如果这只是它的一个症状。
我知道它不完整,因为所有生成的类都出来了。作为struct
s和b。使用空接口体(未定义方法)。
我确定在使我的.dll适合于赎罪时,我做错了什么;我已经改变了Assembly-Info,并为所有类型制作了默认构造函数。我打算做其他事吗?
答案 0 :(得分:1)
如果将程序集标记为COM可见,则在dispinterface
的帮助下公开具有默认构造函数的所有公共类。此接口类型设计用于后期绑定客户端,例如脚本语言,它通过Dispatch标识符(DISPID)调用方法和属性。附带的类型库不包含该接口的任何条目。
要绑定到固定布局,您需要切换到dual
或IUnknown
接口。只需按如下方式修改AssemblyInfo.cs
:
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(true)]
[assembly: ClassInterface(ClassInterfaceType.AutoDual)]
现在,接口的方法在类型库和IntelliSense中都可见。
但是请注意,对于AutoDual
公开的类,您在更新程序集时需要注意。有关详细信息,请参阅this链接。