2017-09-23 6 views
0

私は自分のプロジェクトにNuGetライブラリを追加しました。私はGitHubからライブラリコードをクローンし、デバッグでコンパイルしました。NuGetによって私のアプリプロジェクトに追加されたOSSライブラリをデバッグするには?

プロジェクトでPDBを使用するにはどうすればライブラリのコードに入ることができますか?

NuGetライブラリへの参照は引き続き可能ですか?私はNuGet参照を削除し、ライブラリプロジェクトへの参照を追加することができます。

VSシンボル設定でPDBへのパスを追加しようとしましたが、動作しませんでした(デバッグ中にVSのライブラリのソースコードファイルを開いてブレークポイントを置くと、しなかった)

enter image description here

+0

ライブラリをデバッグする最善の方法は、NuGetリファレンスを削除し、OSSライブラリへの参照を追加することです。 NuGetから入手したのと同じバージョンのライブラリを必ず追加してください。 – Odrai

+0

ありがとうございますが、私はより簡単な方法を探しています。私はNuGetでライブラリを作成するために使用された正確なコミットを得ました。 –

答えて

0

運がよけれ場合はOSSプロジェクトでは、その方法は、あなたは、単に、シンボルソースにそれらを追加して「ちょうど私のコード」をオフにすることができ、SymbolSourceにソースやシンボルパッケージを公開しますデバッガの設定とデバッグができなくなります。

あなたが幸運ではないが、著者が少なくともPDBをNugetパッケージ自体に追加した場合、デバッガはあなたにソースを指し示すように促し、ローカルのgitリポジトリをポイントしてデバッグする。他のソースからPDBを見つけることができる場合は、それらを出力ディレクトリにコピーするだけで、Visual Studioがそれらを取り出してソースの場所を尋ねます。

私がこれらのほとんどの場合のように怠けている場合は、etup dotPeek as a Symbol Serverを使用するか、Resharperの "Decompiled code into step"を使用して、オンザフライでOSSライブラリを逆コンパイルしてデバッグしてください。あなたはきれいなソースを手に入れませんが、多くの場合、それは仕事を終わらせます。 dotPeekとは別に、Red-Gate Reflector Proも同様の機能を備えています。

ローカルソースから、NuGetパッケージの独自のデバッグバージョンを構築することができます。 PDBが含まれていて、ソースがローカルで利用可能な場合、Visual Studioはそれらを自動的に取得します。 NuGetソースとしてローカルフォルダを追加すると、カスタムバージョンを一時的に選択することができます。

最後に、NuGetパッケージをローカルに削除し、ローカルにビルドされたソースに完全に切り替えます。いくつかのケースでは可能ではないかもしれないので、最後の手段です(デバッグしようとしているコードは他のコンポーネントによって参照されており、例えば強く署名する必要があります)。そして、それはローカルプロジェクトにいくつかの重要な変更を必要とし、あなたは実際にあなたの努力の中間結果をコミットすることはできません。

+0

ありがとうございます。いいえ、NuGetはSymbolSourceを使用せず、PDBも持っていません。私はVSでこれをやろうとしており、私はResharperを持っていません。自分のNuGetパッケージをビルドしてVSにローカルのNuGetソースを追加すると、プロジェクトにNuGetを再追加せずにVSのNuGetソースを変更するにはどうすればよいですか?たぶん、NuGetフォルダを削除して、NuGetを再度取得してローカルソースを使用する必要がありますか? –

+0

もう一つの解決策があります:私はDLLとPDBを\ packages \ Prism \フォルダにコピーするだけで、うまくいくと思います。私がデバッグを終えたら、NuGetがそれらをダウンロードできるようにフォルダを削除することができました –

+0

いいえ、それはorkを持っていません –

関連する問題