.NET Framework ライブラリのソースコードが利用可能に

.NET Framework ライブラリのソース コードが部分的に利用可能になったのでやってみた。

これは、Visual Studio 2008 からデバッグ時に .NET Framework ライブラリのソース コードが参照できるようになったものだ。

詳しい手順は、以下に載っている (英語)。

上記の手順によれば、先ず、Visual Studio 2008 QFE という Hotfix をインストールすることになっている。

だが、これは「このソフトウェア更新の対象製品はこのコンピュータにインストールされていません。」というエラーが出てできなかったのでやらなかった。
Source Code Outliner PowerToy for Visual Studio 2008

以降、手順通りでうまく行った。

  1. メニュー -「ツール」-「オプション」でオプションのダイアログを開き、「デバッグ」-「全般」で、
    1. 「'マイ コードのみ'設定を有効にする」をオフ
      Source Code Outliner PowerToy for Visual Studio 2008
    2. 「ソース サーバー サポートを有効にする」をオン
      Source Code Outliner PowerToy for Visual Studio 2008
  2. オプションのダイアログの「デバッグ」-「シンボル」
    Source Code Outliner PowerToy for Visual Studio 2008

    1. 「シンボル ファイル (.pdb) の場所」に新規で "https://referencesource.microsoft.com/symbols" を追加
    2. 「シンボル サーバーからシンボルをキャッシュするディレクトリ」として適当な (存在する) ディレクトリを指定
    3. 「シンボルが手動で読み込まれるときのみ上記の場所を探す」は、ここではオンにしておく
      Source Code Outliner PowerToy for Visual Studio 2008
  3. デバッグを開始する。
    Source Code Outliner PowerToy for Visual Studio 2008
  4. 適当なところで、
    1. メニュー-「デバッグ」-「ウィンドウ」-「呼び出し履歴」から「呼び出し履歴」ウィンドウを表示する (Ctrl+Alt+C でも可)
    2. 「呼び出し履歴」の中の .NET Framework 部分に当たる適当な行で右クリックし、ポップアップ メニューから「シンボルの読み込み」をクリック
      Source Code Outliner PowerToy for Visual Studio 2008
    3. ライセンスに関する規約に同意するかどうか聞かれるので、"Yes" と答える
      Source Code Outliner PowerToy for Visual Studio 2008
    4. 読み込みに成功すると、「呼び出し履歴」のその行をダブル クリックすることで、.NET Framework のソースコードにジャンプできるようになる
  5. 次に Ctrl+Alt+U で「モジュール」ウィンドウを開く
    • 「モジュール」の中の適当な行を右クリックし、ポップアップ メニューから「シンボルの読み込み」をクリック
      Source Code Outliner PowerToy for Visual Studio 2008
      Source Code Outliner PowerToy for Visual Studio 2008
  6. ソースコードの .NET Framework の呼び出しのところで、ステップ イン (F11) をすると、シンボルが読み込み済みのモジュールであればそのソースにステップ インできる
    Source Code Outliner PowerToy for Visual Studio 2008
  7. 毎度手動でシンボルを読み込む場合は、上記の通りであるが、オプションのダイアログの「デバッグ」-「シンボル」-「シンボルが手動で読み込まれるときのみ上記の場所を探す」をオフにしておけば、キャッシュ用のディレクトリにシンボルが自動で読み込まれ、必要なときはそこを参照するようになるため、毎度手動でシンボルを読み込む手間が省ける。
    Source Code Outliner PowerToy for Visual Studio 2008

.NET

Posted by Fujiwo