这是我尝试过的:
在Visual Studio 2017中制作了一个新的控制台应用程序(.NET Framework)。
添加了以下代码:
static void Main(string[] args)
{
new Dictionary<int, int>().TryGetValue(3, out int x); //I want to step into TryGetValue() (this is just an example)
}
在模块窗口中加载了已确认的符号:
mscorlib.dll已加载符号。 4.6.1586.0构建者:NETFXREL2
尝试:“踏入(F11)”
尝试:“步入特定”| “System.Collections.Generic.Dictionary.TryGetValue”
两者都只是跨过界限。
我已尝试使用此处的详细信息配置VS:http://www.symbolsource.org/Public/Home/VisualStudio
同样的结果,调试器跨越了这条线。
我在这里看了答案:https://stackoverflow.com/a/12432029/297451
但是这个版本似乎不是安全更新,搜索“site:support.microsoft.com/kb 4.6.1586.0”不会产生任何效果。
我做错了什么?
答案 0 :(得分:13)
感谢Hans Passant,这是答案。请注意,此解决方案提出了其他问题。
确保https://referencesource.microsoft.com/包含您正在调试的确切版本。
按照此处的指定配置Visual Studio: https://referencesource.microsoft.com/setup.html
确认符号已加载到“模块”窗口中,并包含源索引。
微软可以通过提供有用的错误消息而不是静默失败来使这个过程更加健壮。
答案 1 :(得分:6)
Use the Symbol Server feature in JetBrains dotPeek。在努力使标准功能发挥作用之后,对我来说就像一个魅力:
如果这不起作用,可能是因为Visual Studio之前已经下载了错误的&#34; Microsoft / NuGet中有关程序集的符号,并使用它们而不是询问dotPeek。要检查这一点,请开始调试并在模块列表中找到相关的程序集(Debug&gt; Windows&gt; Modules) - 删除&#34;符号文件&#34;中显示的路径下的PDB文件。对于那个程序集,然后重新启动调试,dotPeek应该开始行动。