2013年2月22日更新:Microsoft Connect条目记录了Alok Shriram(程序管理器,基类库,.NET Framework),现在应该解决该问题。 Connect条目标记为已解决(已修复):
现在应该修复此问题。我们发布了参考资料的更新。 如果您的问题仍未解决,请告知我们。
一年半。
如何在Visual Studio 2010中启用.NET框架源步骤?
注意:这个问题是一个更大的整体:
- .NET 2.0 WinForm: Supporting DPI and Default Font Changes
- WinForms控件在ScaleControl期间不会缩放
- VS2010:如何启用"启用.NET Framework源代码"?
- Visual Studio 2010 Professional: How to access Modules window?
- Visual Studio 2010: Properties.Settings broken after retargetting project to .NET Framework 3.5
Visual Studio 2010附带了一项新功能:
按照MSDN页面How to: Debug .NET Framework Source上的说明进行操作:
启用.NET Framework源代码调试
在工具菜单上,点击选项。
在选项对话框中,点击调试类别。
- 醇>
在常规框中,选中以下复选框:
- 启用.NET Framework源步骤
- 启用源服务器支持
我这样做:
注意:您将注意到,正如MSDN页面所述,并且正如我所注意到的那样,检查启用.NET Framework源代码将自动取消选中**启用Just My代码(仅限管理)。我还启用了源服务器支持的诊断消息。
启用这些选项会自动为我设置符号缓存下载位置:
注意: Microsoft Symbol Server 条目已存在(无法删除)。
MSDN页面表示加载符号:
使用“模块”窗口加载框架符号
在模块窗口中,右键单击未加载符号的模块。您可以通过查看符号状态列来判断符号是否已加载。
- 醇>
指向从加载符号,然后单击 Microsoft Symbol Server 从Microsoft公共符号服务器或符号路径下载符号,以从您拥有的目录加载以前存储的符号。
我试试这个:
然后加载所有符号:
我一直坐在断点上,即将调用.NET框架代码:
protected override void ScaleControl(SizeF factor, BoundsSpecified specified)
{
base.ScaleControl(factor, specified);
按 F11 会导致调试器跳转到下一行:
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代码之前切换到反汇编视图(调试 - > Windows - > 反汇编),我可以在.NET代码中看到call
:
当我这样做时,我最终调试了System.Windows.Forms.ScaleControl
:
与步入.NET Framework源代码不同或有用。
如何在Visual Studio 2010中启用.NET Framework源步骤?
我计算机上配置的符号缓存路径包含符号缓存文件:
因此它正在下载pdb
符号文件,但拒绝使用它们。
如何在Visual Studio 2010中启用.NET Framework源步骤?
Leppie建议我检查Debug
日志(调试日志窗口打开;否则它不会记录任何内容):
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.
所以它是找到我的符号,但声称它找不到它们。
如何在Visual Studio 2010中启用.NET Framework源步骤?
来自微软意大利的人建议关闭要求源文件与原始版本完全匹配:
这没有解决它。
如何在Visual Studio 2010中启用.NET Framework源步骤?
有人建议Microsoft的源代码服务器存在 .NET Framework 4.0 的错误。根据该建议,我将项目切换为 .NET Framework 3.5 :
这没有解决它。
如何在Visual Studio 2010中启用.NET Framework源步骤?
有人在某个地方想知道另一个人是否遇到同样的问题was using the 64-bit version of the debugger。现在,没有64位版本的Visual Studio,但我尝试将我的项目从 AnyCPU 切换到 x86 (它被JIT到x64),案例Microsoft不支持64位处理器:
这没有解决它:
Step into: Stepping over method without symbols 'System.Windows.Forms.Form.ScaleControl'
如何在Visual Studio 2010中启用.NET Framework源步骤?
答案 0 :(得分:6)
虽然不幸的是,正如Leppie指出的那样,微软存在问题(我也得到了相同的结果,见
应该注意的是,无论如何你的尝试都会失败,因为你引用了:
而不是:
referencesource.microsoft.com/symbols
请参阅Configuring Visual Studio to Debug .NET Framework Source Code
的常见问题/疑难解答部分答案 1 :(得分:4)
我认为我找到了答案。
我追踪了Fiddler上发生的事情。似乎只有符号目前可用,而且没有来源。
当VS尝试从'referencesource'服务器加载符号时,它失败(404)。由于这失败了,我认为它无法映射到该服务器上的源文件。
在上述失败之后,它会尝试一些名为“msdl”的服务器,在那里找到实际的PDB(但看起来这个没有源代码信息)。
总而言之,它似乎是他们服务器的(临时)Microsoft问题。
我确信我有一些源代码。但现在它无法正常工作。
修改强>
我尝试了各种.NET版本,结果相同。 :(
答案 2 :(得分:1)
现在,如果安装了SP1,则无法正常工作。以下是关于MS问题表单的一些评论:http://social.msdn.microsoft.com/Forums/en-US/refsourceserver/thread/41388c7b-582b-4e3f-8178-3d38a3c99639
答案 3 :(得分:0)
答案 4 :(得分:0)
以下是官方说明https://referencesource.microsoft.com/setup.html
配置Visual Studio 2013以调试.NET框架
要配置Visual Studio 2013,请在“工具”中执行以下操作 - >选项 - >调试 - >一般菜单:
- 仅禁用我的代码
- 禁用步骤属性和运算符
- 禁用要求源文件与原始版本完全匹配
- 启用.NET框架源步进
- 启用源服务器支持
答案 5 :(得分:0)
以我为例,我正在调试旧的 .NET 2.0 WinForms 应用程序,并且收到了“ Source Not Available” 消息。我尝试了所有推荐的设置。
最终,我重新构建了该应用程序,以临时定位 .NET 4.5 ,并且能够使源代码正常工作。也许我的应用程序太旧了,无法进行源代码步进。我知道有种失败的目的,但是对于快速而肮脏的测试它是可行的。 .NET 4.5 中仍然存在我存在的错误。 :)
答案 6 :(得分:-1)