Visual Studio 2012には、実行可能ファイルとクラスライブラリプロジェクトで構成される大規模なソリューションがあります。アプリケーションのデバッグ時に、特定のクラスライブラリプロジェクトのブレークポイントがヒットしていません。
Debug> Windows> Modulesウィンドウを見て、そのプロジェクトのシンボルのステータスを確認しましたが、"PDBファイルが見つからないか、開くことができません"と表示されます。
また、"No""User Code"列の下にあります。
ソリューションには、その列に「いいえ」と表示されているカスタムプロジェクトが他にもいくつかあり、それらのシンボルもロードできません。 「ユーザーコード」の下に「はい」と表示されているものはすべて、pdbが問題なくロードされていたようです。しかし、これが関連するかどうかはわかりません。
Dllでdumpbin/headersを使用しましたが、pdbファイルのパスが存在し、正しいです。
モジュールは、シンボルの読み込みの除外リストに含まれていません。
また、モジュールウィンドウのエントリを右クリックして、"Load symbols"を選択し、dllヘッダーで指定されたパスに移動してみました。 pdbを選択すると、"このフォルダーに一致するシンボルファイルが見つかりませんでした"と表示されます。
これらのフォルダーとファイルを削除し、ソリューションをクリーンアップし、閉じて、すべてを再構築した後、これを取得します。 pdbは間違いなく、問題のdllと同時にビルドされました。
したがって、明らかに問題は、エラーメッセージの「pdbを開けない」部分です。
これを2台のコンピューターで試しましたが、どちらも同じ動作を示しています。
誰もここからどこに行くべきかについての提案を提供できますか?おそらく、dllに対応するビルドされたpdbがなぜ読み込まれないのですか?
Pdbとdllが実際に一致するかどうかを確認するためにいくつかのツールを試してみましたが、 chkmatch を使用して、実行中のdllのGUIDとobjフォルダーのpdbが一致しないことがわかりました。
したがって、プロジェクトのobjフォルダー内のdllとpdbは一致していますが、ビルド後イベントによって実際にアプリケーションの宛先フォルダーにコピーされていたdllは、前のビルドの古いdllでした。
ビルド後イベントは、その特定のプロジェクトがビルドされる前、または少なくともビルドが終了する前に実行され、既存のdllをビンからコピーしていたため、ビルドの継続によって上書きされました。
ソリューションのプロジェクトの依存関係を編集し、ビルド後イベントのあるプロジェクトがロードされていなかったプロジェクトに依存するようにすることで問題を解決し、デバッグ中にpdbがロードされるようになりました。
スタートアッププロジェクトフォルダーからbinおよびobjフォルダーを削除し、ソリューションを再構築しました。
私にとっては、プロジェクトをIISから削除し、再度作成しただけで正常に動作します
私にとっては、chkmatchツールを使用してから、Visual Studioを閉じて開き、クリーンにして再構築するだけでした。これで、私のpdbもロードされます。 Nanhydrinが指摘したように、[デバッグ]-> [Windows]-> [モジュール]から確認できます。このビューはデバッグ中にのみアクセスできます。
私の場合、参照されたdllの古いバージョンは私のGACにありました。それをクリアし、それは働いた。
リマインダー:プロジェクトを「デバッグ」構成にします...私のような忘れて愚かなことをする人のために。
ソリューションからプロジェクトを削除し、ソリューションに再度追加してくれました。 :)
ここでパーティーに少し遅れて-念のためこれは役に立ちます。
(Visual Studioの異なるソリューションで)いくつかの個別のWebサイトがあります。いずれかのサイトの初期ロード時に、画像を返す他のサイトへの呼び出しを行っていました。
これらのサイトは両方とも共通のDLLを参照していましたが、1つのサイトで作業している間、他のサイトが「リリース」ビルドに残されていることに気付きませんでした-サイトのロード後に、問題のDLLが再構築されましたが、シンボル。
モジュールのデバッグウィンドウについて言及してくれた(非常に役立つ)と、ビルド後のイベントで私を正しい方向に導いてくれたNanhydrinに感謝します。
私のために働いた別のスレッドからの回答: https://stackoverflow.com/a/28476665/5969306
-Visual Studioの場合:[プロジェクトプロパティ]-> [ビルド]-> [詳細設定]ボタン-> [デバッグ情報]ドロップダウンで、値が「なし」でないことを確認します。
デバッグウィンドウに次のような行がありました。
モジュール「MyModule.dll」のシンボルはロードされませんでした。
[プロジェクトプロパティ]-> [ビルド]の[コードの最適化]オプションを削除しました。そして、エラーは消えました。
私はこの問題を抱えて、他のすべての解決策を試しました(2日間かかりました!!泣いています...!2日間!).
コマンドプロンプトで、次のコマンドを入力します。
gacutil –u <Assembly name>
この問題は、プロジェクトでdllの誤った参照が使用されていることが原因である可能性があります。
objおよびbin現在のプロジェクトのフォルダーとbuildプロジェクトを再度削除します。
ASP.NET Temporaryフォルダーへのアクセス許可を確認します。
"c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files"
アプリケーションプールのユーザーには、次のようなASP.NETファイルのサブフォルダーに対する権限が必要です。
root\60039743\c28e12ee