別のソリューションに作成してインストールしたnugetパッケージがありますが、新しいソリューションから呼び出されたときにパッケージのコードをデバッグする必要があります。
パッケージのソリューションを参照しようとしましたが、機能していません。
Visual Studio 2013を使用しています。
Dllをデバッグするには、そのシンボルファイル(.pdb)が必要です。 debug
構成でプロジェクトをビルドすると、これらのファイルが生成され、ビルド出力フォルダーに配置されることがわかります。
Visual Studioは、これらのシンボルファイルを here のようにさまざまな場所から読み込みます。しかし、nugetパッケージをデバッグする最も簡単な方法は、パッケージの.pdbファイルをデバッグするプロジェクトのビルド出力フォルダーに入れることです。
デバッグしようとしているコードが非ユーザーコードとして分類されている場合、uncheckJust My Code
デバッグオプション。
ユーザーコードと非ユーザーコード
ユーザーコードを非ユーザーコードと区別するために、Just My Codeはシンボル(.pdb)ファイルとプログラムの最適化を調べます。デバッガーは、バイナリが最適化されるとき、または.pdbファイルが利用できないとき、コードを非ユーザーコードと見なします。
3つの属性は、デバッガーがMy Codeと見なすものにも影響します。
他のすべてのコードはユーザーコードと見なされます。
デバッグモードで作成したnugetパッケージを使用してプロジェクトをビルドし、デバッグディレクトリからデバッグしたいプロジェクト内のnuget dllの場所にpdbとdllをコピーするだけで、これが機能しました。
例:コピー元
ExternalNugetPackage\bin\Debug \
に
ProjectDirectory\Packages\ExternalNugetPackage.1.0.0\lib\net4.5
私が作成したNugetパッケージのコードをデバッグする方法
NtFreXが答えたように、「dllをデバッグするには、そのシンボルファイル(.pdb)が必要です。」。したがって、消費者がVisual Studioデバッガーでパッケージコードにステップインできるようにするシンボルパッケージを作成できます。
私たちがそれを行う方法(そして動作します):
詳細情報については、 シンボルパッケージの作成 を参照してください。
これらのパッケージがNuGet Gallery/SymbolSourceでの公開に適さない場合は、*。nupkgおよび* .symbols.nupkgファイルをローカルディスクに配置できます。
注:パッケージを参照するソリューションのデバッグソースファイルにソースコードを追加します(ソリューションを右クリックし、[プロパティ...共通プロパティ...デバッグソースファイル]を選択して、関連するバイナリリファレンスのルートソースディレクトリを追加します)
Visual Studio 2017およびGitHubまたはBitBucketでホストされているnugetパッケージのソースコードの場合:
1)* .csprojファイルで完全なデバッグ情報を有効にします。
<PropertyGroup Condition="'$(Configuration)'=='Debug'">
<DebugType>full</DebugType>
<DebugSymbols>true</DebugSymbols>
</PropertyGroup>
または、プロジェクトのプロパティを右クリックして、ビルド、詳細、デバッグ情報を出力します-完全に設定します。
2)nugetパッケージdllの自動ソースダウンロードとステッピングを有効にするには、nugetパッケージSourceLink.Create.CommandLine
をプロジェクトに追加するか、*。csprojファイルに手動で追加します。
<ItemGroup>
<PackageReference Include="SourceLink.Create.CommandLine" Version="2.8.2" PrivateAssets="All" />
</ItemGroup>
詳細 こちら
3)ツール-オプション-デバッグで、「マイコードのみを有効にする」を無効にし、「モジュールのロード時にJIT最適化を抑制する(管理のみ)」を有効にします。
この後、nugetパッケージdllからメソッド内部にステップできるようになります。