微軟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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章