`
lovnet
  • 浏览: 6717605 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

微软CLR Interop Team的CodePlex主页上线!Interop Assistant代码公开!

阅读更多

经过一段时间的筹备,在Team的几位PM的共同策划之下,在CodePlex上面的CLR Interop主页终于上线了。CodePlex是微软公司开办的一个开源网站,上面的项目主要以.NET相关为主。我们CLR Interop Team决定在这里建立一个主页,专门用于存放内部成员所开发的Interop相关工具。主页的地址是:http://www.codeplex.com/clrinterop

可能有些朋友还不清楚CLR Interop Team究竟是从事什么方面的开发,这里简单介绍一下。CLR,也就是Common Language Runtime(公共语言运行时),相信大部分朋友比较熟悉,是微软公司开发的一个虚拟机,用于运行基于中间代码(Intermediate Language,简称IL)的.NET程序,支持多种语言以及混合编程(C#/VB/C++/...),支持垃圾收集等。从事CLR开发的CLR Team比较大,大概有一两百来人。CLR Interop Team则是CLR Team中的专门关注托管代码和非托管代码交互的一个Team,成员分布在上海和美国,共同合作开发维护Interop相关的功能,如P/Invoke, Reverse P/Invoke, COM Interop以及相关工具(TlbImp、TlbExp、RegAsm)等。

现在CodePlex主页上面的项目目前暂时只有一个,就是我在1月份MSDN Magazine发布的文章中所介绍的P/Invoke Interop Assistant(不过这个工具并非由CLR Interop Team成员编写,而是由来自VB Team的Jared编写的)。这个工具极大的方便了开发者对P/Invoke的使用,可以直接生成某个指定API的C#/VB的声明代码,供开发者直接使用,而无需参照MSDN上面的函数原型自己编写,提高了生产率,并且减少了出错的可能。更强大的功能是,可以直接从C编写的函数声明(目前还不支持C++)生成对应的C#/VB代码。除此之外,这个工具还可以查看已有的Assembly中的p/invoke或者COM Interop的函数声明,提示对应的非托管函数的原型以及关于数据转换(Marshalling)相关的一些提示和建议。感兴趣的朋友可以在之前我提到的文章上面找到更加详细一些的介绍,地址为:http://msdn.microsoft.com/en-us/magazine/cc164193.aspx

对于开发人员来讲,P/Invoke Interop Assistant的实现也许更有兴趣。对编译器实现感兴趣的朋友,可以参考工具中分析C代码的实现,对于研究编译器实现中的词法分析和语法分析的内容是有一定帮助的。此外,P/Invoke Interop Assistant还使用了Reflection读取Assembly中的元数据,对此感兴趣的朋友也可以拿来参考。最后,P/Invoke Interop Assistant使用了Code Dom来直接生成C#/VB代码,避免了直接使用字符串拼接的尴尬。最后需要提一下的是,因为作者Jared是来自VB Team,因此他的代码全部是由VB.NET写成,有些不太熟悉VB.NET的朋友可能会不太习惯,不过应该不会影响阅读。

P/Invoke Interop Assistant的代码可以在这里下载:http://www.codeplex.com/clrinterop/SourceControl/ListDownloadableCommits.aspx

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics