Visual Studio 2010で「ソースの参照」が有効になっているのはいつですか? (下記参照)
さらに、 http://referencesource.Microsoft.com/ からダウンロード済みのソースコードファイルを参照できるように、これを有効にしたいです。
Microsoftは常に [〜#〜] pdb [〜#〜] /ソースコードを最新のパッチと同時にリリースするとは限らないため、これは便利です。したがって、たとえばDateTimeにステップインしたい場合、DateTimeを含まない最新のパッチは本当に気にしません。 http://referencesource.Microsoft.com/ からダウンロードしたコードを参照したいだけです。
いくつかの調査の結果、PDBファイルの内容を表示するための便利なツールであるdia2dumpが見つかりました。 (C:\Program Files (x86)\Microsoft Visual Studio 10.0\DIA SDK\Samples\DIA2Dump\
にあります)
.NET Frameworkステッピングを使用して、DateTimeなどのソースコードが表示されない場合は、mscorlib.pdb
ファイルは実際にダウンロードされます。
しかし、dia2dumpで内部を見ると、ソースファイルのマッピングは含まれていません。言い換えれば、私の最初のアイデアのようにソースコードを参照できたとしても、ソースファイルのマッピングや関数の開始アドレスがなく、多くのものが不足しているため、機能しません:(
ここでの解決策は、仮想マシン用に 。NET Reflector Proを使用するか、仮想マシンを手元に置いて、ソースコードを含むフレームワークのリリースで更新を無効にすることだと思います。
Visual Studioからビルドを実行するときは常に、通常、実行可能ファイルのほかに [〜#〜] pdb [〜#〜] ファイルも取得します。このファイルは、..bin\Debug
または..bin\Release
ディレクトリにあります。このPDBファイルは、アセンブリ内のソースコード行と実行可能コードへのマッピングを保持します。また、ビルドが行われたソースコードファイルの元の場所は、PDBファイル内に保存されます。これは、G:\ClassLibrary\Class1.cs
にある単一のファイルを持つクラスライブラリを構築する場合、このパスはClassLibrary.pdb
内に格納されることを意味します。これらすべてから覚えておくべき重要なことは、PDBファイルがないと、ソースコードのステップインデバッグを実行できないということです。
したがって、クラスライブラリ用にドライブG:\ClassLibrary1
でビルドを実行するとします。
ClassLibrary.dll
ファイルとClassLibrary.pdb
ファイルを提供するか、ソース管理からチェックアウトして取得します。
プロジェクトでClassLibrary.dll
を参照し、ライブラリのクラスを使用します。
ライブラリからクラスコードにステップインしようとすると、次のことが起こります。
Visual StudioはClassLibrary.pdbファイルを見つけようとします いくつかの場所で
1.1見つからない場合は、「ソースを検索するために参照」が無効になっているページが表示されます。有効なPDBファイルがないとデバッグできないことを忘れないでください。
1.2 PDBファイルが見つかった場合は、PDBファイルの内部を調べて、元々作成されたClass1.cs
をデバッグしようとしていることを確認します。
G:\ClassLibrary1\Class1.cs
コンピュータでそのファイルを探します。
1.2.1見つかった場合は、コードに自動的にステップインします。
1.2.2見つからない場合は、次のダイアログが表示されます。
[キャンセル]を押すと、「利用可能なソースがありません」というメッセージが表示され、この場合は「ソースを検索するために参照」が有効になります。
どうして?有効なPDBファイルがありますが、Visual Studioは、ClassLibrary1のソースコードがコンピューターのどこにあるのか、またはコンピューターのどこにあるのかさえわからない可能性があるためです。そのため、ダイアログが表示されたので、VisualStudioでソースコードファイルの正確な場所を指定できます。
では、ソースが無効になっていることを確認するために参照を取得したら、どうしますか?
Visual Studioで、メニューDebug->Windows->スタックを呼び出す。
一番上のコールスタック命令を右クリックして、「シンボルロード情報」を選択します。 VisualStudioが有効なPDBファイルを見つけようとした場所が表示されます。
classLibrary1.dll
をデバッグしようとするとこのメッセージが表示されます。アセンブリとそのPDBファイルは、まったく同じビルドのものである必要があります。そうでない場合、このメッセージが表示されます。 (このチェックは、ビルドを実行するたびに、アセンブリおよびPDBファイル内に配置された一意の番号を使用して実行されます)記事をチェックしてください。NET Framework 4.0ソースコードへのステップイン。
「利用可能なソースがありません」画面が表示された場合は、「参照してソースを検索」を押して、ソースディレクトリで必要なファイルを見つけてください。あなたはおそらくそれを見つけるためにファイル検索を使用する必要があるはずです。これは1回だけ実行されます。これ以降、Visual Studioはこの場所を記憶し、不足しているソースファイルを検索するためです。
私はそれがあなたが探しているものについてであることを願っています。