web-dev-qa-db-ja.com

Visual Studio:参照DLLのデバッグ、別のSLNにソースがあります

私が追加したDLLへの参照を持つプロジェクトをデバッグしようとしています。DLLは外部ディレクトリに保存され、参照を追加しましたこれで、もちろんプロジェクトをデバッグできますが、他のdllのメソッドを呼び出す行、つまりF12にステップインすることはできません。

これを行う方法の1つは、プロジェクト(dll)を既存のプロジェクトとしてソリューションに追加し、参照されたdllを置き換えて、ディスク上のファイルではなく添付プロジェクトを使用することでした。

しかし、なんて混乱だ、もっときれいな方法があると確信していますか?

いくつかのPDBファイルなどをコピーしたことを覚えているようですが、覚えていません。また、Visual Studioのコピーを2つ(メインプロジェクト用に1つ、参照DLL用に1つ)開く必要がありますか?

64
Martin

自分のマシンで2番目のソリューションをデバッグモードで再構築します(そのPDBのファイルパスがマシンに固有になるように)。

both.DLLおよび.PDBファイルを参照フォルダーにコピーします。 Visual Studioは.PDBファイルを自動的に取得し、ファイルパスを使用してソースを表示します。

参照されたアセンブリが他の場所でビルドされている場合、Symbol ServerおよびSource Serverを使用してこれを実現することもできます。 http://msdn.Microsoft.com/en-us/library/vstudio/ms241613.aspx

70
Knaģis

私は以下を行うことで解決策を得ました

Just My Code(JMC)を無効にしてみてください。

[ツール]-> [オプション]-> [デバッガ] [コードだけを有効にする]のチェックを外します

12
Dilip Jangid

私は解決策をクリーニングして再構築することで解決した同じ問題を抱えていました。 .pdbファイル内の参照を修正して、2番目のプロジェクトのブレークポイントを見つけてヒットします。

1
Aamol

デバッグビルドを行うと、すべてのdllおよびpdbファイルがホストプロジェクトに確立されます。そのため、ファイルを手動でコピーする必要はありません。

ソリューションを右クリックし、[プロジェクトの追加/既存...]を選択します。クラスlibフォルダーに移動し、projファイル(myproj.csprojなど)を選択します。ファイルはコピーされず、参照されるだけなので、IDEでクラスのソースを開き、通常の方法でブレークポイントを設定すれば動作します。

0
Cool Blue