リファレンスコードをネットにアクセスせずにステップ実行する

昨日のエントリの NetMassDownloader で公開されたコードを全部落として、ネットアクセスなしでリファレンスコード内をステップ実行する方法のメモ。一行実行するたびに地球の裏側までリクエストが飛んでいって帰ってくる(?)のを待つ必要がなくなり、サクサク動きます。

VisualStudio2008ですでにリファレンスコードを読む設定をしてあることが前提です。

まずは必要なコードを全部落とします。PowerShell と昨日の NetMassDownloader が必要です。コマンドは例えばこうなります。

.\NetMassDownloader.exe -fo -o C:\ReferenceSource -d C:\Windows\Microsoft.NET\Framework\v2.0.50727
.\NetMassDownloader.exe -fo -o C:\ReferenceSource -d 'C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0'
.\NetMassDownloader.exe -fo -o C:\ReferenceSource -d C:\WINDOWS\Microsoft.NET\Framework\v3.0\WPF

これで C:\ReferenceSource ディレクトリに PDB ファイルとソースコードがドバっと落ちてきます。実行にはかなり時間が掛かります。x64 が必要ならそれも、Reference Assemblies の v3.5 に System.Web.Extensions.DLL があるので、必要ならそれも追加で落としてください(ほかのディレクトリにも細々とあるかも?)。

VisualStudio で、ツール→オプションのデバッグ→シンボルを開いて、「シンボルファイル(.pdb)の場所」に C:\ReferenceSource を追加。
次に、デバッグ→全般の「ソースサーバーサポートを有効にする」のチェックをはずし、「元のバージョンと完全に一致するソースファイルを必要とする」のチェックもはずして、OK ボタンを押します。

さらに各ソリューション(プロジェクトじゃないですよ)のプロパティページの共通プロパティ→デバッグソースファイルの「ソースコードを含んでいるディレクトリ」に先ほどの C:\ReferenceSource\ を追加して、OK ボタンを押します。これは面倒なことに全部のソリューションで一つずつ実行する必要があるようです(>_<)

これで、リファレンスコード内でステップインをしても、ネットにお伺いを立てにいかなくなり、サクサク動くようになりました。

手順に過不足がありそうなので、何か見つけたらコメントいただけるとありがたいです。