文章主要阐述两个方面的主要内容:第一、.Net Framework Source Code的发布;第二、如何对.Net Framework Source Code进行单步调试。
第一、.Net Framework Source Code的发布。
Scottgu发布的一篇文章,已经详细说明了开源的Libraries。这里,我想讲的是.Net Framework Source Code是基于MS-RL(Microsoft Reference License)许可下发布的。这里有一篇关于.Net Framework Source Code的文章ttp://blog.joycode.com/scottgu/archive/2007/10/04/109100.aspx,有兴趣的朋友可以阅读一下。
第二、如何对.Net Framework Source Code进行单步调试。
这里我主要针对VS2005IDE环境下对.Net Framework Source Code的单步调试。首先,在Codeplex的网站下载一个.Net Mass Downloader的程序,这个程序主要用来从微软符号服务器下载源代码到本地硬盘。这里有几点要注意的:你必须先下载.Net Framework3.5,3.0,2.0的安装包,并安装完成后方可下载,否则的话,你会下载不到任何源代码。打开VS2005命令提示窗口,输入命令,如下:C:/netmassdownloader>netmassdownloader -d "C:/Program Files/Reference Assemblies/Microsoft/Framework/v3.5" -d "C:/Program Files/Reference Assemblies/Microsoft/Framework/v3.0" -d "c:/Windows/Microsoft.net/framework/v2.0.50727" -output C:/ReferenceSource。这时候的下载将会花费你很长的时间。接着它便会将源代码逐个下载到C盘的ReferenceSource文件夹里面。然后,打开VS2005,在工具->选项->调试->常规中,将“启用源服务器支持”和“要求源文件与原始版本完全匹配”的复选框的勾去掉。如图所示:
第二步、在工具->选项->调试->符号中,输入C:/ReferenceSource,如图所示:
第三步、在项目解决方案属性的通用属性中的调试源文件中输入C:/ReferenceSource,可惜的是我的VS2005输入不了,截不了图给大家看了。不知道是不是要安装SP1补丁才可以呢?只好在注册表里面改了,操作如下:打开注册表,在HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/VisualStudio/8.0下面有一个Key叫Source Directories,把你的本地源代码路径添到最前并以分号(;)结尾即可。
最后,建立一个名称为”DebugSourceCode”的项目来进行单步调试。在Default.aspx.cs中输入代码如下:using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["CliqiueSiteNewsBlog"].ConnectionString);
}
}
对它设置断点,并按F11进行单步调试,效果图:
对System.Data.dll加载符号信息后来调试DbConnectionHelper.cs和DBConnection.cs。这里注意一点就是必需下载到System.Data.pdb文件才可以。效果图:
DbConnectionHelper.cs:
DBConnection.cs:
上面两张截图,实现了数据库连接的原理。
从符号加载信息图来看,System.Data.pdb已经被加载了。如图所示:
最后,我以此文作抛砖引玉之举,希望大家发表各自的看法。如果本文有什么错误的话,也恳求大家指教!