如何启用“启用.NET Framework源码步进”?
更新2013年2月22日 :Microsoft Connect条目从Alok Shriram(程序pipe理器,基类库,.NET Framework)注意到现在应该解决该问题。 连接条目被标记为已解决(固定) :
这个问题现在应该被修复。 我们发布了参考资源的更新。 如果您的问题仍未解决,请告诉我们。
一年半。
奖金链接
-
表决该错误在Microsoft Connect上修复 。
-
微软社交networking已经持续了一年半的时间,询问什么时候会修复 。
原来的问题
如何在Visual Studio 2010中启用.NET框架源代码?
注 :这个问题是一个更大的整体:
- .NET 2.0 WinForm:支持DPI和默认的字体更改
- 在ScaleControl中,WinForms控件不能缩放
- VS2010:如何启用“启用.NET框架源代码”?
- Visual Studio 2010专业版:如何访问模块窗口?
- 将项目redirect到.NET Framework 3.5后,Visual Studio 2010:Properties.Settings被破坏
Visual Studio 2010带有一个新function:
- 工具,选项,debugging,常规, 启用.NET Framework源代码步进
遵循MSDN页面上的说明如何:debugging.NET Framework来源 :
启用.NET Framework源代码debugging
在工具菜单上,单击选项 。
在选项对话框中,单击debugging类别。
在“ 常规”框中,选中以下checkbox:
- 启用.NET Framework源代码步进
- 启用源服务器支持
我这样做:
注意 :您将会注意到,正如MSDN页面注释,以及我注意到的,检查启用.NET Framework源代码步进将自动取消选中**启用只是我的代码(仅pipe理)。 我还启用了源服务器支持的诊断消息。
启用这些选项会自动为我设置一个符号caching下载位置:
注意 : Microsoft符号服务器条目已经存在(并且不能被删除)。
MSDN页面说加载符号:
使用“模块”窗口加载框架符号
在“ 模块”窗口中,右键单击未加载符号的模块。 您可以通过查看符号状态列来确定符号是否已加载。
指向“ 加载符号”并单击“ Microsoft符号服务器”以从Microsoft公共符号服务器或符号path下载符号,以从先前存储符号的目录加载。
我试试这个:
然后加载所有的符号:
我一直在坐在一个断点上,即将调用.NET框架代码:
protected override void ScaleControl(SizeF factor, BoundsSpecified specified) { base.ScaleControl(factor, specified);
推F11导致debugging器只是跳到下一行:
protected override void ScaleControl(SizeF factor, BoundsSpecified specified) { base.ScaleControl(factor, specified); //Record the running scale factor used this.scaleFactor = new SizeF( this.scaleFactor.Width * factor.Width, this.scaleFactor.Height * factor.Height);
如何在Visual Studio 2010中启用.NET Framework源代码步进?
我坐在代码中的一个断点处。 我尝试双击进一步在调用堆栈中的函数。 这个,我希望,让我跳转到.NET代码:
除了它不工作:Visual Studio告诉我,没有可用的来源:
如何在Visual Studio 2010中启用.NET Framework源代码步进?
如果在尝试进入.NET代码( debugging – > Windows – > 反汇编 )之前切换到反汇编视图,我可以看到一个call
.NET代码:
而当我这样做,我最终debugging反汇编System.Windows.Forms.ScaleControl
:
这与.NET Framework源代码不一样,也不一样有用。
如何在Visual Studio 2010中启用.NET Framework源代码步进?
我的电脑上configuration的符号cachingpath确实包含符号caching文件:
所以它是下载pdb
符号文件,但拒绝使用它们。
如何在Visual Studio 2010中启用.NET Framework源代码步进?
Leppiebuild议我检查Debug
日志(打开debugging日志窗口,否则它不logging任何东西):
Step into: Stepping over method without symbols 'System.Windows.Forms.Form.ScaleControl'
在日志的早些时候,我看到它加载符号System.Windows.Forms.dll
:
Loaded 'C:\Windows\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll', Symbols loaded.
所以它find我的符号,但声称它找不到它们。
如何在Visual Studio 2010中启用.NET Framework源代码步进?
来自意大利微软的一位人士build议closuresRequire源文件以与原始版本完全匹配 :
这并没有解决它。
如何在Visual Studio 2010中启用.NET Framework源代码步进?
有人提出,Microsoft的.NET Framework 4.0源服务器存在一个错误。 遵循这个build议,我将项目切换到了.NET Framework 3.5 :
这并没有解决它。
如何在Visual Studio 2010中启用.NET Framework源代码步进?
有人在某处空闲地怀疑另一个遇到同样问题的人是否正在使用64位版本的debugging器 。 现在,没有64位版本的Visual Studio,但是我试图将我的项目从AnyCPU切换到x86 (它被JIT到64位),以防Microsoft不支持64位处理器:
这并没有解决它:
Step into: Stepping over method without symbols 'System.Windows.Forms.Form.ScaleControl'
如何在Visual Studio 2010中启用.NET Framework源代码步进?
也可以看看
- configurationVisual Studio以debugging.NET Framework源代码
- 无法在VS2010中debugging.NET框架代码
- 尽pipe设置了选项,.NET框架源代码步进不起作用
- 设置Visual Studio 2010以进入Microsoft .NET源代码
- Visual Studio 2008 SP1 .NET Framework源代码debugging
- 在Visual Studio 2008版本9.0.21022.8 RTM中没有debugging>模块窗口
用于单步执行源代码的PDB仅针对RTM和Service Pack发布。 因此,当安全更新出来,它会修改您正在尝试debugging的DLL,这将导致源步不工作(也就是说,你会得到“无源可用”与灰色“浏览find源“)。
但是,一旦你做了所有适当的设置,你可以使用下面的解决方法。 解决方法基本上是find导致dll更改的安全更新,然后将其删除。 这有一个明显的缺点,就是在你的机器上删除了这些安全更新。
解决方法
- 确定你想debugging到哪个DLL(例如System.Windows.Forms.dll)
- 在debugging时,在Visual Studio中打开“ 模块”窗口,find“ 版本”列。 如果版本不是RTM或Service Pack版本,则需要执行该工作stream程。 通常,RTM DLL会说“由RTMRel构build”。 虽然是一个安全更新的一部分的DLL会说“build立:RTMGDR”。 请注意版本号(例如,由RTMGDR构build的4.0.30319.269)
- 现在,我们要find创build此版本的更新。 通过在support.microsoft.com/kb/上searchdll和版本号来执行此操作。例如,我执行了以下Googlesearch:
site:support.microsoft.com/kb System.Windows.Forms.dll 4.0.30319.269
- search应该显示有关更新的信息。 记下地址栏中的KB号码。 在我的例子中,地址是
http://support.microsoft.com/kb/2604121
,所以KB2604121是我们感兴趣的。 - 转到控制面板 – >程序和function,然后单击“查看已安装的更新”
- 查找列出KB编号的更新(可以使用右上angular的search)。
- 卸载该更新。
- 重复此过程为同一个dll,直到dll回到它的RTMRel版本或SP版本。 例如,对于System.Windows.Forms.dll,我必须在返回到RTMRel版本之前删除KB2686827,KB2604121,KB2518870。
您需要为.NET框架中的每个dll执行此操作,您可以关心它们的debugging情况。
完成之后,在.net源代码中设置一个断点(例如,进入断点标签,比如New-> Break at Function,然后inputSystem.Windows.Forms.Form.Form),或者进入一个.net在该DLL的方法。
不幸的是,微软有一个问题,正如Leppie指出的那样(我看到了同样的结果
- “没有可用的源代码” – Visual Studiodebugging(即使符号已经加载) )
应该指出,你的尝试会失败,因为你引用:
- Microsoft符号服务器
代替:
-
referencesource.microsoft.com/symbols
请参阅configurationVisual Studio以debugging.NET Framework源代码的FAQ /疑难解答部分
我想,我find了答案。
我追溯了小提琴手上发生的事情。 似乎只有符号是可用的,没有来源。
当VS尝试从“referencesource”服务器加载符号时,它将失败(404)。 由于这个失败,我认为它不能映射到该服务器上的源文件。
在上述失败之后,它会尝试一些名为“msdl”的服务器,在其中find实际的PDB(但是看起来这个服务器没有源代码信息)。
总而言之,这似乎是他们的服务器(临时的)微软问题。
我相信我有一段时间的源代码。 但现在它不工作。
编辑:
我尝试了与各种.NET版本,所有相同的结果。 🙁
现在,如果您安装了SP1,则无法正常工作。 以下是有关MS问题表单的一些注释: http : //social.msdn.microsoft.com/Forums/en-US/refsourceserver/thread/41388c7b-582b-4e3f-8178-3d38a3c99639
你可以在这里find参考资源,可以下载:
.NET Framework 4.0参考源
WCF,WF甚至是4.5 Beta / RC的源代码也可以在这里find:
Microsoft Referencesource NetFramework
这里是官方说明https://referencesource.microsoft.com/setup.html
configurationVisual Studio 2013以debugging.NET框架
为了configurationVisual Studio 2013,请在工具 – >选项 – >debugging – >常规菜单中执行以下操作:
- 只禁用我的代码
- 禁用跨越属性和操作符
- 禁用要求源文件完全匹配的原始版本
- 启用.NET框架源码步进
- 启用源服务器支持