经过一段时间的筹备,在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
分享到:
相关推荐
《CLR via C#》非托管代码互操作性提到的P/Invoke Interop Assistant开发工具,包含源代码,是从网站:http://clrinterop.codeplex.com/ 上下载的,作为备份
COM组件的调用和使用问题; 非托管代码调用托管代码
CLR 包装器和 C# 代码是我开发的,目的是学习和分享如何在不使用 P/invoke 的情况下实现本机库和 C# .NET 之间的互操作。 重要的提示: C# 可执行文件要求 MathFuncDll 位于工作目录中。 添加了构建后事件以自动将...
微软说明文档CLR,详实的介绍
微软.NET CLR统计分析器,可以统计内存使用情况,统计各种信息,让人了解CLR内部工作情况,深入了解CLR
clr-via-csharp针对CLR和.NET Framework 4.0进行深入、全面的探讨,并结合实例介绍了如何利用它们进行设计、开发和调试。全书5部分29章。第Ⅰ部分介绍CLR基础,第Ⅱ部分解释如何设计类型,第Ⅲ部分介绍基本类型,第...
CLR via C# 图书配套代码 《CLR via C#》 是 《.NET 框架程序设计》的第二版 这个是配套的代码
CLR via C#(第3版) 带书签中英文版及随书源代码
CLR 完全介绍 托管代码与非托管代码之间的封送处理
【】39726e13ca4b5de8ba86bb891513915b【】公共语言运行库(CLR)开发系列课程(1):Pinvoke简介【】公共语言运行库(CLR)开发系列课程(2):Pinvoke进阶【】公共语言运行库(CLR)开发系列课程(3):COMInterop基础【】公共...
This code accompanies Jeffrey Richter’s CLR via C# book (Microsoft Press).
CLR编程CLR的动态内存分配以不同的方式工作,CLR维护其独立于本地C++堆的内存堆。当我们不再需要在CLR堆上分配的内存时,CLR会自动将其删除。因此,我们不必在为CLR编写的程序中使用delete运算符。CLR还可以压缩内存...
.NET 开发环境下,CLR开发的绘图板,重在质量,专为期末作品设计
因项目需要,要用C#程序调用C++的一个DLL库,了解到有个工具叫CLRInsideOut,其中一个的功能就是把C++下的结构体或者函数声明转换成C#下的定义,自动生成 C# 代码。 现上传上来,方便大家编码,给有需要的人,个人...
P/Invoke Interop Assistant小工具,方便的生成C 的dll结构体等原型,P/Invoke Interop Assistant小工具,方便的生成C 的dll结构体等原型
CLR via C# 第四版示例源码CLR via C# 第四版示例源码
c++ 通过 clr 方式 封装 原生 c++ dll , 由c# 对其调用 通过创建c++ clr项目dll_test_net,其内部封装纯c++ dll (dll_test_cpp),然后c#项目 test_net调用dll_test_net。 所有项目由vs2008创建。 防入坑提示: clr...
Infragistics NetAdvantage for ASP.NET 2008 Vol 2 CLR 2.0 Source 源代码
百度microsoft system clr types for sql server 2012出来的微软下载地址都只是一个txt的文件,csdn居然有人要50分,太气愤了,积分意思的收1分,确实找这个花了点时间,里面包含英文、简、繁体。解压密码: ...
本朽针对 CLR 和. NE 丁 F ? , 0 唯 4 _ 5 进行浑入、全面的探讨,设计、开发和调试.全书 5 部分共 29 章。第 l 部分介绍 CLR 基础.分介 tlI 从本类贬.第 I ' V 部分以核心机制为毛脱,并结合实例介绍了如何利用...