web-dev-qa-db-ja.com

EntityFramework NuGetパッケージのPDBファイルを取得するにはどうすればよいですか?

EntityFramework NuGetパッケージ(バージョン6.1.3)のStackOverflowをデバッグしようとしています。スタックフレームを表示するには、EntityFramework.DLLとEntityFramework.SqlServer.DLLのPDBファイルが必要です。ただし、Visual StudioにMSFTシンボルソースまたはSymbolSource.orgからこれをダウンロードさせることはできないようです(他のシステムPDBやNewtonSoft.jsonなどを入手できます)。 EF PDBはどこでも利用できますか?

31
ChaseMedallion

今写真付き(私は約1時間の試行と失敗を要したので)

  1. Get JetbrainsのDotPeek (スタンドアロンバージョン)

  2. DotPeek-> File-> Open->プロジェクトのbinフォルダーを参照し、EntityFramework.dllを開きます。

  3. Right mouseEntityFrameworkのボタンをクリックし、Generate Pdb...を選択します enter image description here

enter image description here

  1. エクスポートしたフォルダーに移動してEntityFramework.pdbフォルダーを開き(わかりました!)、ファイルEntityFramework.pdbが見つかるまで深く掘り下げて、binフォルダー(EntityFramework.dllの横)にコピーします。

  2. Visual Studio-> DEBUG-> Options and Settings...-> Symbolsに移動し、binフォルダーをSymbol file (.pdb) locationsに追加します。

enter image description here

  1. プロジェクトを実行し、それらのブレークポイントが熟した赤に変わることを祈ります。

編集:EFをoptimizedモードで実行し始めることがあり、デバッグがほとんど役に立たなくなります。これがこの質問の要点です。起こる

  1. Visual Studio-> Debug-> General->(一番下)Use Managed Compatibility Modeに移動します。プロジェクトにチェックマークを付けて実行します(プロジェクトが最適化されている場合は、チェックマークを外して実行し、もう一度チェックマークを付けて実行してから...)

enter image description here

  1. EFがブレークポイントに到達するまで待たずに最適化されて実行されるかどうかを確認するには、Visual Studio-> Debug-> Windows-> Modulesに移動します。次に、ソリューションを実行すると、モジュール(2)が表示されます。それをクリックして、EntityFramework.dllを見つけます。Optimized(Yes = bad、No =デバッグ可能)という列があるはずです。

enter image description here

これで時間を節約できれば幸いです。

20

ソースコードをダウンロードします: codeplexのエンティティフレームワーク

ダウンロードボタンは、[ソース]タブのサブメニューにあります

ダウンロードしたら:

  • ソリューション/プロジェクトを構築する

  • Binディレクトリ[〜#〜] nb [〜#〜]に移動します。通常の場所になく、"..\..\bin\Debug\"に設定されています。プロジェクトのプロパティを参照してください。

EntityFramework.pdbとEntityFramework.SqlServer.pdbの両方があります。

また、デフォルトまたはそれよりも簡単に利用できると思います。

12
Seabizkit

方法の1つは、シンボルサーバーとして dotpeek を使用することです(エンティティフレームワークdllをロードし、dotpeek設定からコピーされたdotpeek sererアドレスを追加します)-このアプローチの優れている点は、使用されたdllバージョンと一致するpdbを自動的に生成したことです、それほど素晴らしいものではありません-ソースコードなどからの元のコメントは含まれません。

4
Giedrius