孙展波:实现.NET无限潜力

Realize .NET Potential (中文版)
随笔 - 430, 评论 - 12203, 引用 - 54

导航

关于

贴子以"现状"提供且没有任何担保也没有授予任何权利。
计数器(2005/12/8起).点击阅读我的Blog In English

标签

每月存档

最新留言

广告

 

先前相关:微软将发布.NET框架库的大量源代码

在上次Blog的评论中,有人称赞道:确实,调试方便了不是一点点;这真是太cool了;很好,期待很久了!不过也有这样的评论:买一张MSDN就可以了。实际上,MSDN中并没有包含将发布的.NET Framework的源代码。

这项服务还在最后的调试阶段,很快就会对外发布。我在这个周末通过Visual Studio 2008使用了这一服务。对于.NET程序员来说,这真的是非常有助于调试,也提供了软件开发时候很有价值的参考。

为了在Visual Studio 2008中使用此服务,有以下几个要点:

  1. 在Debugging | General 选项中,不要选Enable Just My Code (Managed Only).
  2. 在Debugging | General 选项中,选择Enable source server support.
  3. 在Debugging | Symbols 选项中,添加Microsoft Reference源代码服务的URL。 正式的URL很快会对外发布。

首次使用时需要接受2个License:一个是symbol,另外一个是Source.

这样在调试程序的时候就可以看到.NET Framework的源代码,也可以在调试时跟进(Step into)。

比如说WinForm的Button.cs就被下载到\src\source\.net\8.0\DEVDIV\depot\DevDiv\releases\whidbey\REDBITS\ndp\fx\src\WinForms\Managed\System\WinForms\Button.cs\1\Button.cs。从文件夹的结构可以看到,.NET框架3.5下的WinForm代码实质上还是Whidbey即.NET 2.0。但的确有了一些更新。REDBITS下是.NET 3.5发布时候的代码。

即使将Winform的项目的Target Framework改成2.0或者3.0,我们一样得到上述的Button.cs. 这是因为REDBITS在安装时取代了早先2.0的程序集。

在WPF下的Button.cs被下载到\src\source\.net\8.0\WIN_WINDOWS\lh_tools_devdiv_wpf\Windows\wcp\Framework\System\Windows\Controls\Button.cs\1\Button.cs。虽然现在WPF属于DevDiv的一部分了,从这个文件夹的结构可以看到以前WPF是隶属于Windows的。

在代码的格式上,您也一定能够看出DevDiv和Windows的区别。

除了在文件中添加了几行版权声明:

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.

您看到的代码与微软内部能够看到的代码是完全相同的。那些代码中的注释,还有对private或者internal members的说明,都是在此之前无法从MSDN的文档中得到的信息。

当然没有任何代码是十全十美的。我已经注意到标有HACK HACK HACK注释的代码了。

阅读代码对程序员而言是一件有趣的活动。随着Microsoft Reference源代码服务的推出,我们有更多的阅读材料了!

打印 | 张贴于 2008-01-07 10:31:00 | Tag:WPF/SilverLight  Visual Studio  FCL | 库函数  ASP.NET  WinForm

留言反馈

#re: 在Visual Studio 2008中使用Microsoft Reference源代码服务 编辑
极度郁闷.

在Visual Studio 2008中使用Microsoft Reference源代码服务时候,
我家里的笔记本 XP+VS2008. 死活就是不下在代码,只会下载 pdb 文件。

我看了
http://blogs.msdn.com/sburke/archive/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code.aspx
这里的几个解决方案,都不行

我用 Fiddler 监控到底发送请求到那台服务器, 确认都是到了
http://referencesource.microsoft.com/symbols

极度郁闷。

公司电脑就没问题,但是家里电脑就死活搞不定.
2008-02-28 08:42:54 | [匿名:ghj1976]
#回复: 在Visual Studio 2008中使用Microsoft Reference源代码服务 编辑
2008-01-21 00:40:00 | [匿名:孙展波]
#回复: 在Visual Studio 2008中使用Microsoft Reference源代码服务 编辑
不过我想既然可以在线下载,那最终完全的包应该会搞的到的:)
2008-01-08 10:33:00 | [匿名:jetli]
#回复: 在Visual Studio 2008中使用Microsoft Reference源代码服务 编辑
有点意外,为什么不象jdk一样直接打包给大家,而是在线下载用到的某个代码文件??
难怪叫做源代码服务而不是开放源代码了。
2008-01-08 10:15:00 | [匿名:jetli]
#回复: 在Visual Studio 2008中使用Microsoft Reference源代码服务 编辑
2008-01-08 10:12:00 | [匿名:None]
#回复: 在Visual Studio 2008中使用Microsoft Reference源代码服务 编辑
什么时候 可以使用呢?
2008-01-08 08:24:00 | [匿名:MSSW]
#回复: 在Visual Studio 2008中使用Microsoft Reference源代码服务 编辑
有点遗憾的是在05里不能使用08下载回来的symbols
2008-01-07 21:30:00 | [匿名:gOODiDEA]
#回复: 在Visual Studio 2008中使用Microsoft Reference源代码服务 编辑
beta2用不来?
2008-01-07 17:56:00 | [匿名:J]
#回复: 在Visual Studio 2008中使用Microsoft Reference源代码服务 编辑
..thanks...
2008-01-07 15:11:00 | [匿名:jacky]
#回复: 在Visual Studio 2008中使用Microsoft Reference源代码服务 编辑
thanks.
2008-01-07 15:10:00 | [匿名:jacky]
#回复: 在Visual Studio 2008中使用Microsoft Reference源代码服务 编辑
To BillyChow,
微软提供Symbol和Source的服务.Debugger利用该服务下载pdb和源代码。

To Jacjy,
据我所知,没有独立的安装包。若有不同的信息,将写在blog中。

To aaf,您需要做一些配置才能使用该服务。
2008-01-07 13:57:00 | [匿名:孙展波]
#回复: 在Visual Studio 2008中使用Microsoft Reference源代码服务 编辑
这些开放的部分源代码是集成在前不久的VS 2008 RTM里的吗?
或者还是需要自己下载并集成?
2008-01-07 13:30:00 | [匿名:BillyChow]
#回复: 在Visual Studio 2008中使用Microsoft Reference源代码服务 编辑
Source code有独立的安装包下载吗?
2008-01-07 13:16:00 | [匿名:jacky]
#回复: 在Visual Studio 2008中使用Microsoft Reference源代码服务 编辑
看来 十分期待...
2008-01-07 11:48:00 | [匿名:MSSW]
#回复: 在Visual Studio 2008中使用Microsoft Reference源代码服务 编辑
期待一下...
2008-01-07 11:24:00 | [匿名:武眉博]
#回复: 在Visual Studio 2008中使用Microsoft Reference源代码服务 编辑
很奇怪,我写了一段ASP.NET,3.5的调试不进去,也没有下载相关的源代码。
2008-01-07 11:04:00 | [匿名:aaf]
#回复: 在Visual Studio 2008中使用Microsoft Reference源代码服务 编辑
很酷!!
2008-01-07 11:01:00 | [匿名:gerry]
博客主人设置本博客不允许匿名用户发表言论,请登录后再试

Powered by: Joycode.MVC引擎 0.5.2.0