期待已久的.NET Framework終于在本周開放代碼可讀權限了,微軟在MS-RL協議下終于公開了.NET Framework源代碼,我們只可以自由查看,不允許直接進行修改。具體來說,你現在可以查看和調試下面的.NET框架庫的源代碼:
- .NET 基類庫(包括 System, System.CodeDom, System.Collections, System.ComponentModel, System.Diagnostics, System.Drawing, System.Globalization, System.IO, System.Net, System.Reflection, System.Runtime, System.Security, System.Text, System.Threading等)
- ASP.NET (System.Web, System.Web.Extensions)
- Windows Forms (System.Windows.Forms)
- Windows Presentation Foundation (System.Windows)
- ADO.NET and XML (System.Data 和 System.Xml)
正在向上面的類庫列表中添加其他的框架庫(包括LINQ, WCF和Workflow)過程之中。在接下來的幾周或者幾個月之內它們將可用。
在Visual Studio 2008中啟用參考源代碼訪問
在Visual Studio 2008中啟用.NET框架庫源代碼訪問只要幾分鐘就可以配置完成。Shawn Burke在這里有一篇很詳細的博客,說明了如何啟用源碼支持的具體步驟。
如果你在配置時遇到了麻煩或者有問題的話,請在MSDN這里的Reference Source Forum論壇提問。
調試進入.NET框架庫源代碼
在按Shawn上面的博客中的步驟配置完成之后,你就可以動態地加載.NET框架庫的調試符號并且調試進入到源碼之中。在你調試框架庫代碼的過程中,VS 2008將會從MSDN源碼服務器上按需下載符號和源碼文件:
開發者的注釋也包括在源文件中。在上面的例子中,你可以看到Control基類中的Dispose方法的注釋例子。
有時,你會看到一些注釋引用了我們的缺陷/工作項跟蹤數據庫(bug/work-item tracking database)中以前的缺陷跟蹤號碼,這些號碼提供了關于某個特定編碼決定的額外歷史信息。例如,上面的注釋指出,某個特定的成員變量,為保持與框架的一個老版本的向后兼容性,不該設置成null,并且指出了因此而修正的一個向后兼容性缺陷。
參考許可(Reference License)
.NET 框架源碼是在一個只讀參考許可(read-only reference license)下發布的。去年十月份我們宣布將要公布源碼的時候,一些人對他們查看源碼的的潛在影響有些顧慮。為了澄清和對這些顧慮作一個說明,我們對許可作了一個小小的改動,特別指出這個許可不適用于在擁有和.NET框架“相同或者本質上相同的特性或者功能(the same or substantially the same features or functionality)”的非Windows平臺下開發軟件的開發者。如果你開發的軟件是針對Windows平臺的,那么你就可以查看這些源碼,即使那些軟件擁有和.NET框架“相同或者本質上相同的特性或者功能”。
結語
我們認為,提供源碼訪問和.NET框架庫的調試集成對.NET開發者來說是非常有價值的。能夠單步調試和查看源碼對.NET框架庫是如何實現的應該會提供一個更好的認識,然后使你開發出更好的應用程序,更好地應用.NET框架。