web-dev-qa-db-ja.com

.NET Frameworkソースコードにステップインできません

Visual Studio 2013を使用しており、.NET 4.5.2プロジェクトを持っています。次のページに従って設定を行いました。

http://referencesource.Microsoft.com/setup.html

この設定では、必要なすべてのシンボルがダウンロードおよびロードされていることがわかりますが、次のようなコードにステップインすることはできません。

var cookieContainer = new System.Net.CookieContainer();

Source Not Availableメッセージが表示されます。

私は次のコードにうまく入ることができます:

Console.WriteLine("test");

Mscorlib.dllからコードにステップインできるが、System.dllからコードにステップインできない理由はありますか?

28
huseyint

と.NET 4.5.2プロジェクトを持っています

バージョン番号が問題です。これはリファレンスソースの一般的な問題であり、Microsoftは新しいフレームワークバージョンのソースを提供するのに十分なほど最新の状態に保ちません。そして、セキュリティと安定性の更新のために、さらに厄介です。これに取り組んだ人たちはこの問題をよく知っています。彼らはこれを彼らのプレゼンテーションの問題として指摘しましたが、現在、そして常に、ToDoアイテムのステータスを持っています。

これは視覚化できるものです。まず、シンボルキャッシュ(MicrosoftPublicSymbolsにあるもの)からSystem.pdbを削除します。次に、テストプログラムのデバッグを開始すると、デバッガーがサーバーから新しいPDBを取得します。 [デバッグ]> [ウィンドウ]> [モジュール]を使用して、System.dllを右クリックし、[シンボルロード情報]を選択します。私のマシンでは次のようになります:

C:\projects2\ConsoleApplication407\bin\Debug\System.pdb: Cannot find or open the PDB file.
C:\Windows\Microsoft.Net\Assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.pdb: Cannot find or open the PDB file.
C:\Windows\System.pdb: Cannot find or open the PDB file.
C:\Windows\symbols\dll\System.pdb: Cannot find or open the PDB file.
C:\Windows\dll\System.pdb: Cannot find or open the PDB file.
C:\temp\symbols\System.pdb\c464b02c2bf04080adcad166dc729c151\System.pdb: Cannot find or open the PDB file.
C:\temp\symbols\MicrosoftPublicSymbols\System.pdb\c464b02c2bf04080adcad166dc729c151\System.pdb: Cannot find or open the PDB file.
SYMSRV:  C:\temp\symbols\System.pdb\C464B02C2BF04080ADCAD166DC729C151\System.pdb not found
SYMSRV:  http://referencesource.Microsoft.com/symbols/System.pdb/C464B02C2BF04080ADCAD166DC729C151/System.pdb not found
http://referencesource.Microsoft.com/symbols: Symbols not found on symbol server.
SYMSRV:  System.pdb from http://msdl.Microsoft.com/download/symbols: 96985 bytes 
http://msdl.Microsoft.com/download/symbols: Symbols downloaded from symbol server.
C:\temp\symbols\System.pdb\C464B02C2BF04080ADCAD166DC729C151\System.pdb: Symbols loaded.

通常の場所でPDBを検索していて、見つからないことがわかります。次に、SYMSRVに連絡します。最初にhttp://referencesource.Microsoft.com、当然のことながら、そのサーバーは「見つかりません」と言います。そして、通常のmsdlサーバーからコピーを取得します。必要なファイルと行番号のデバッグ情報を持たない、ストリップされたサーバーです。

これに対するクリーンな修正はありません。マシンを参照ソースバージョンに再度ダウングレードする必要があります。 Windows 8.1を使用して実行できないこと。そして、私はVS2013を使用するべきではありません。レッドゲートのリフレクターは代替品です。

私は serVoice item を作成しました。これには、さらに多くの票が必要です。


更新:参照ソースが4.5.2(2015年3月)に更新されました

23
Hans Passant

JetBrains DotPeek(現在のバージョン1.2)には非常に優れた機能があり、pdbを生成できるだけでなく、組み込みのSymbol Serverを介してそれらのpdbをローカルに提供し、デバッグ時にVisual Studioにシンボルを提供できます。明らかに、ソースコードは実際のソースではなく逆コンパイルされたコードですが、通常のMSシンボルサーバーが必要なpdbを提供していない場合には、それでもなお非常に役立ちます。

シンボルサーバー機能に関する情報は their website にあります。

15
kjbartel