2008-10-12 69 views
1

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

我已经导入mscoree.tlb但它似乎并不包括我所需要的接口。

我感兴趣的接口包括:IMetaDataEmit。任何与此相关的示例代码都会非常有用,尽管目前为止我还没有找到任何代码。

C#的样品将被罚款,因为我可以很容易地将它们转换为F#。

在此先感谢任何人谁可以帮我这个非常模糊查询!

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

回答

1

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

+0

非常感谢您的回复:-)然而,我现在已经设法使用基于cor.h中引用的GUID的手动COM接口进行排序,结果是我认为无论如何都是最好的方法! – ljs 2008-10-25 15:14:31

1

我希望你找到了mdbg sample其中包括包裹究竟你需要的接口源代码。

+0

哦,我的上帝,我很兴奋!让我们看看你是对的... – ljs 2009-01-05 16:08:52