私が試したものは次のとおりです。
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)
}
ここにリストされている設定を構成しました: https://blogs.msdn.Microsoft.com/sburke/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code/ =
確認済みのシンボルが[モジュール]ウィンドウに読み込まれます。
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」を検索しても何も得られません。
私は何を間違えていますか?
これが答えです、ハンス・パッサンのおかげです。このソリューションでは、追加の質問が発生することに注意してください。
https://referencesource.Microsoft.com/ に、デバッグしている正確なバージョンが含まれていることを確認します。
ここで指定されているとおりにVisual Studioを構成します。 https://referencesource.Microsoft.com/setup.html
ソースインデックスが含まれた状態で、シンボルがモジュールウィンドウにロードされていることを確認します。
マイクロソフトは、静かに失敗するのではなく、有用なエラーメッセージを提供することにより、このプロセスをより堅牢にすることができました。
JetBrains dotPeekのSymbol Server機能を使用 。標準機能を機能させるのに苦労した後、私にとって魅力のように働きました:
これが機能しない場合は、おそらくVisual Studioが以前にMicrosoft/NuGetから問題のアセンブリの「間違った」シンボルをダウンロードし、dotPeekに問い合わせる代わりにそれらを使用しているためです。これを確認するには、デバッグを開始し、モジュールリストで関連するアセンブリを見つけます([デバッグ]> [Windows]> [モジュール])-そのアセンブリの[シンボルファイル]の下に表示されるパスでPDBファイルを削除します、デバッグを再開すると、dotPeekが実行されます。