如何从C#或F#访问IMetaDataEmit和其他MetaData COM接口?

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

标签: c# com f# com-interop

我正在用F#编写一个编译器,我希望能够访问.net运行时中的unmanaged metadata COM interfaces。在任何人提到它之前, Reflection.Emit不适合我的目的,我也不想使用除元数据COM接口之外的任何其他方法。

我已经导入了mscoree.tlb但它似乎没有包含我需要的接口。

我感兴趣的界面包括IMetaDataEmit。任何与此相关的示例代码都非常有用,但到目前为止我还没有找到任何代码。

C#样本会很好,因为我可以很容易地将它们转换为F#。

感谢任何能帮助我解决这个相当神秘的问题的人!

更新:我现在通过使用接口GUID编写显式COM引用来对其进行排序!

2 个答案:

答案 0 :(得分:1)

这里的一个选择是创建自己的项目并将这些接口(使用cor.h中的定义)编译成类型库,然后您可以将其转换为托管程序集。我意识到将C头代码转换为IDL会非常繁琐,但这可能是某些文本处理脚本自动化(或部分自动化)。

答案 1 :(得分:1)

我希望您找到mdbg sample,其中包含用于完全包装所需接口的源代码。