能否阅读并逐步执行.NET Framework源代码?

8

使用VS2008的用户有没有办法进入并阅读MSDN库的源代码?

我来自Java背景,那里这是可能的...


你是指 .Net 框架库吗? - Kevin LaBranche
5个回答

21

是的,这是可能的。请查看Shawn Burke的以下博客文章以获取详细信息:

配置Visual Studio以调试.NET Framework源代码

另一方面,如果您只想检查某些在.NET Framework中的实现方式(而不是进行调试),则可以使用.NET Reflector(由LorenVS提到)。 这是一个非常有用的工具,可以帮助您更好地理解.NET框架。


1
你比我早30秒发了同样的博客链接 ;) - Thomas Dufour

4

我可以为您提供的最佳方式是使用RedGate的.NET反编译器。虽然不能直接进入其中,但是它会为您提供各种.NET类的完整源代码。


3
实际上你可以使用Visual Studio和Reflector进行调试,包括单步执行、断点等等...请参见http://orand.blogspot.com/2006/10/debugging-with-reflector-and-visual.html 但是在.NET框架的特定情况下,Martin给出的答案更容易实现。 - olle

3

我的三分之一意见:

  1. 如果您拥有Visual Studio 2008 SP1或更高版本,则不必安装配置Visual Studio以调试.NET Framework源代码博客文章中提到的QFE。
  2. 尽管我是.NET Reflector的粉丝,但源代码更好,因为保留了本地变量名称和注释。注释和适当的变量名称可以帮助很多!
  3. 使用NetMassDownloader,您可以一次下载(几乎)所有.NET Framework源代码。当您处于没有互联网访问权限的地方时,这非常有用。

+1 对于NetMassDownloader - 使用下载的符号文件和源代码,可以与Visual Studio 2005一起调试。 - abhilash

2
我最近在VS中进行了一些调试工作,其中包括获取一些与OleDB相关的.NET源代码,我可以进入并查看其运行情况。需要注意的是,当您步进.NET源代码时,不要指望局部窗口(或数据提示)总是会显示变量的值。
例如,简单的变量如int、longs、string等,您将能够获得它们的值。但是,如果尝试获取对象(List<>、自定义对象、DataTable等)的值,您将什么也看不到,只会收到一个消息,说代码已被优化,无法查看这些值。
即使您有.NET源代码,实际编译的代码仍是启用了优化的发布版本。这意味着许多变量和对象的数据不可供分析。
提前告知一下。

1

可以使用反射和 ILDASM 查看 IL,但我认为在调试时不可能进入代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接