Visual Studio で DLL プロジェクトからデバッグする (C#、C++、Visual Basic、F#)
DLL プロジェクトをデバッグする 1 つの方法は、DLL プロジェクトのプロパティで呼び出し元のアプリを指定することです。 その後、DLL プロジェクト自体からデバッグを開始できます。 この方法を使用するには、アプリにより、構成した場所と同じ場所にある同じ DLL を呼び出す必要があります。 アプリによって、DLL の異なるバージョンが検出されて読み込まれた場合、そのバージョンにブレークポイントは含まれません。 DLL をデバッグするその他の方法については、DLL プロジェクトのデバッグに関するページを参照してください。
お使いのマネージド アプリでネイティブ DLL を呼び出すか、ネイティブ アプリでマネージド DLL を呼び出す場合、DLL と呼び出し元のアプリの両方をデバッグできます。 詳細については、「方法: 混合モードでデバッグする」を参照してください。
ネイティブ DLL プロジェクトとマネージド DLL プロジェクトでは、呼び出し元のアプリを指定する設定が異なります。
ネイティブ DLL プロジェクトで呼び出し元のアプリを指定する
[ソリューション エクスプローラー] で C++ DLL プロジェクトを選択します。 [プロパティ] アイコンを選択してAlt+Enterキーを押すか、右クリックして [プロパティ] を選択します。
[<プロジェクト> プロパティ ページ] ダイアログ ボックスで、ウィンドウの上部にある [構成] フィールドが [デバッグ] に設定されていることを確認します。
[構成プロパティ]>[デバッグ] を選択します。
[起動するデバッガー] の一覧で、[ローカル Windows デバッガー] または [リモート Windows デバッガー] のいずれかを選択します。
[コマンド] ボックスまたは [リモート コマンド] ボックスで、呼び出し元のアプリの完全修飾パスとファイル名 (たとえば、.exe ファイル) を追加します。
[コマンド引数] ボックスに、任意の必要なプログラム引数を追加します。
[OK] を選択します。
C# DLL プロジェクトで呼び出し元のアプリを指定します (.NET Core、.NET 5+)
[ソリューション エクスプローラー] で、C# DLL プロジェクトまたは Visual Basic DLL プロジェクトを選択します。 [プロパティ] アイコンを選択してAlt+Enterキーを押すか、右クリックして [プロパティ] を選択します。
[デバッグ] タブで、[Open debug launch profiles UI]\(デバッグ起動プロファイル UI を開く\) を選択します。
[起動プロファイル] ダイアログ ボックスで、[新しいプロファイルを作成する] アイコンを選択し、[実行可能ファイル] を選択します。
新しいプロファイルの [実行可能ファイル] で、実行可能ファイル (.exe ファイル) の場所を参照して選択します。
[起動プロファイル] ダイアログ ボックスで、既定のプロファイルの名前を書き留め、それを選択して削除します。
新しいプロファイルの名前を、既定のプロファイルと同じ名前に変更します。
または、launchSettings.json を手動で編集しても同じ結果になります。 launchSettings.json の最初のプロファイルがクラス ライブラリの名前と一致するようにし、ファイルの最初にリストされるようにする必要があります。
マネージド DLL プロジェクトで呼び出し元のアプリを指定する
[ソリューション エクスプローラー] で、C# DLL プロジェクトまたは Visual Basic DLL プロジェクトを選択します。 [プロパティ] アイコンを選択してAlt+Enterキーを押すか、右クリックして [プロパティ] を選択します。
ウィンドウの上部にある [構成] フィールドが [デバッグ] に設定されていることを確認します。
[開始動作] で次の操作を行います。
.NET Framework DLL の場合は、[外部プログラムを起動する] を選択して、呼び出し元のアプリの完全修飾パスと名前を追加します。
または、[ブラウザーを開始時に使用する URL] を選択して、ローカルの ASP.NET アプリの URL を入力します。
- Visual Basic の .NET Core DLL の場合は、[デバッグ プロパティ] ページが異なります。 [起動] ドロップダウンから [実行可能ファイル] を選択して、[実行可能ファイル] フィールドで、呼び出し元のアプリの完全修飾パスと名前を追加します。
- .NET Core DLL の場合は、[デバッグ プロパティ] ページが異なります。 [起動] ドロップダウンから [実行可能ファイル] を選択して、[実行可能ファイル] フィールドで、呼び出し元のアプリの完全修飾パスと名前を追加します。
[コマンド ライン引数] フィールドまたは [アプリケーション引数] フィールドで、必要なコマンド ライン引数を追加します。
[ファイル]>[Save Selected Items]\(選択した項目を保存\) を使用するか、または Ctrl+S キーを押して、変更を保存します。
DLL プロジェクトからデバッグする
DLL プロジェクトにブレークポイントを設定します。
DLL プロジェクトを右クリックして、[スタートアップ プロジェクトに設定]を選択します。
ソリューションの [構成] フィールドが [デバッグ] に設定されていることを確認します。 F5 キーを押して、緑色の [開始] 矢印をクリックするか、または [デバッグ]>[デバッグの開始] を選択します。
追加のヒントは次のとおりです。
デバッグでブレークポイントがヒットしない場合、DLL 出力 (既定では、<プロジェクト>\Debug フォルダー) が、呼び出し元のアプリで呼び出されている場所であることを確認します。
ネイティブ DLL から呼び出し元のマネージド アプリのコードを中断する場合、あるいはその逆を行う場合、混合モード デバッグを有効にします。
場合によっては、ソース コードが見つかる場所をデバッガーに通知する必要があります。 詳細については、「[シンボルが読み込まれていません] または [ソースが読み込まれていません] ページを使用する」を参照してください。