解决调试.net framework源代码时遇到的问题

项目中遇到棘手问题,需要彻底搞清.net Framework中关于SOAP webservice proxy的一些实现的细节。

从Visual Studio 2008开始,开发者可以通过设置Visual Studio,跟踪.net Framework内部代码。

具体方法如下:

http://referencesource.microsoft.com/serversetup.aspx

更详细的说明如下:

http://blogs.msdn.com/b/sburke/archive/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code.aspx

然后,经过这样的设置,我的Visual Studio 2010(SP1)仍然无法调试。具体现象是,堆栈可以正确显示,但双击后只显示汇编,没有C#代码。

反复尝试了远程下载代码与本地代码两种方式,但发现仍然不起作用。

在Google了一圈之后,找到了这篇文章:

http://www.cnblogs.com/bbcyyb/archive/2012/08/22/2650328.html

它指出,由于MS对文件版本有极高的要求(GUID一致),有可能是.net Framework小版本不同,可能导致搜索代码时错误。

由于安装的SP1和Windows自动更新得到的.net Framework都有可能造成这个问题,为了诊断这个问题,我将VS2010删除后重新安装。问题得以解决。

然后我再次安装了VS2010SP1,问题竟然依然存在!检查系统日志后发现,在我安装SP1时,Windows Update后台自动安装了.net Framework4的几个补丁。我尝试将版本号大于SP1的几个补丁全部删除。再次进入VS2010后发现,调试成功进入.net Framework源代码!

整整折腾了一下午之后,得出结论:VS2010的Framework调试,其Framework的版本必须是.net Framework 4或.net Framework 4 SP1,其它任何中间的小版本升级,都会导致调试器不可用,因为Microsoft在其服务器上只公布了这两个版本的源代码。

注:事实上Microsoft公布了三个版本的源代码,第三个版本的源码对应哪个.net Framework的子版本不得而知。由于精力有限,没有一一尝试。

你可能感兴趣的:(.net,Framework)