Visual Studio での C# または Visual Basic プロジェクトのリモート デバッグ

別のコンピューターに配置されている Visual Studio アプリケーションをデバッグするには、アプリを配置したコンピューターにリモート ツールをインストールして実行し、Visual Studio からリモート コンピューターに接続するようにプロジェクトを構成してから、アプリを実行します。

Screenshot of remote debugger components.

ユニバーサル Windows アプリ (UWP) のリモート デバッグの詳細については、インストールされているアプリ パッケージのデバッグに関するページを参照してください。

要件

リモート デバッガーは、Windows 7 以降と Windows Server 2008 Service Pack 2 以降の Windows Server バージョンでサポートされています。 詳細な要件の一覧については、「要件」を参照してください。

注意

プロキシ経由で接続された 2 台のコンピューター間のデバッグはサポートされていません。 待機時間の長い接続や低帯域幅の接続 (ダイヤルアップ インターネットなど)、または国/地域をまたぐインターネット経由のデバッグは推奨されません。これらは、障害が発生するか、または過度に低速になる可能性があります。

リモート ツールのダウンロードおよびインストール

Visual Studio マシンではなく、デバッグするリモート デバイスまたはサーバーで、次の表のリンクから適切なバージョンのリモート ツールをダウンロードしてインストールします。

  • ご使用のバージョンの Visual Studio に対応したリモート ツールの、最新の更新プログラムをダウンロードしてください。 以前のバージョンのリモート ツールには、新しいバージョンの Visual Studio との互換性がありません。 (たとえば、Visual Studio 2019 を使用している場合は、Visual Studio 2019 用のリモート ツールの最新の更新プログラムをダウンロードします。このシナリオでは、Visual Studio 2022 用のリモート ツールをダウンロードしないでください)。
  • インストール先のマシンと同じアーキテクチャを持つリモート ツールをダウンロードします。 たとえば、x64 オペレーティング システムを実行しているリモート コンピューター上で x86 アプリケーションをデバッグする場合は、x64 のリモート ツールをインストールします。 ARM64 オペレーティング システムで x86、ARM、または x64 アプリケーションをデバッグするには、ARM64 リモート ツールをインストールします。
バージョン Link メモ
Visual Studio 2022 リモート ツール すべてのバージョンの Visual Studio 2022 と互換性があります。 デバイスのオペレーティング システム (x86、x64、または ARM64) に一致するバージョンをダウンロードします。 古いバージョンの Windows Server でのリモート ツールのダウンロードについては、「ファイルのダウンロードのブロック解除」を参照してください。
Visual Studio 2019 リモート ツール すべてのバージョンの Visual Studio 2019 と互換性があります。 デバイスのオペレーティング システム (x86、x64、または ARM64) に一致するバージョンをダウンロードします。 古いバージョンの Windows Server でのリモート ツールのダウンロードについては、「ファイルのダウンロードのブロック解除」を参照してください。
Visual Studio 2017 リモート ツール すべてのバージョンの Visual Studio 2017 と互換性があります。 デバイスのオペレーティング システム (x86、x64、または ARM64) に一致するバージョンをダウンロードします。 Windows Server の場合、リモート ツールのダウンロードについては、ファイルのダウンロードのブロック解除に関するページを参照してください。
Visual Studio 2015 リモート ツール Visual Studio 2015 用のリモート ツールは My.VisualStudio.com で入手できます。 メッセージが表示されたら、無料の Visual Studio Dev Essentials プログラムに参加するか、または Visual Studio サブスクリプション ID でサインインします。 Windows Server の場合、リモート ツールのダウンロードについては、ファイルのダウンロードのブロック解除に関するページを参照してください。
Visual Studio 2013 リモート ツール Visual Studio 2013 ドキュメントのダウンロード ページ
Visual Studio 2012 リモート ツール Visual Studio 2012 ドキュメントのダウンロード ページ
バージョン Link メモ
Visual Studio 2019 リモート ツール すべてのバージョンの Visual Studio 2019 と互換性があります。 デバイスのオペレーティング システム (x86、x64、または ARM64) に一致するバージョンをダウンロードします。 Windows Server の場合、リモート ツールのダウンロードについては、ファイルのダウンロードのブロック解除に関するページを参照してください。 最新バージョンのリモート ツールについては、Visual Studio 2022 ドキュメントを開きます。
Visual Studio 2017 リモート ツール すべてのバージョンの Visual Studio 2017 と互換性があります。 デバイスのオペレーティング システム (x86、x64、または ARM64) に一致するバージョンをダウンロードします。 Windows Server の場合、リモート ツールのダウンロードについては、ファイルのダウンロードのブロック解除に関するページを参照してください。
Visual Studio 2015 リモート ツール Visual Studio 2015 用のリモート ツールは My.VisualStudio.com で入手できます。 メッセージが表示されたら、無料の Visual Studio Dev Essentials プログラムに参加するか、または Visual Studio サブスクリプション ID でサインインします。 Windows Server の場合、リモート ツールのダウンロードについては、ファイルのダウンロードのブロック解除に関するページを参照してください。
Visual Studio 2013 リモート ツール Visual Studio 2013 ドキュメントのダウンロード ページ
Visual Studio 2012 リモート ツール Visual Studio 2012 ドキュメントのダウンロード ページ

リモート デバッガーを実行するには、リモート ツールをインストールするのではなく、msvsmon.exe をリモート コンピューターにコピーします。 ただし、リモート デバッガー構成ウィザード (rdbgwiz.exe) は、リモート ツールをインストールした場合にのみ使用できます。 リモート デバッガーをサービスとして実行する場合は、構成にウィザードの使用が必要になることがあります。 詳細については、「(オプション) リモート デバッガーをサービスとして構成する」を参照してください。

注意

  • ARM デバイスで Windows 10 以降のアプリをデバッグするには、最新バージョンのリモート ツールで使用できる ARM64 を使用します。
  • Windows RT デバイスで Windows 10 アプリをデバッグするには、ARM を使用します。これは、Visual Studio 2015 リモート ツールのダウンロードでのみ使用できます。
  • ARM64 オペレーティング システムで x64 アプリをデバッグするには、ARM64 リモート ツールと共にインストールされる x64 の msvsmon.exe を実行します。

ヒント

場合によっては、ファイル共有からリモート デバッガーを実行するのが最も効率的な場合があります。 詳細については、ファイル共有からのリモート デバッガーの実行に関するページを参照してください。

リモート デバッガーのセットアップ

  1. リモート コンピューター上の [スタート] メニューで、 [リモート デバッガー] を見つけて起動します。

    リモート コンピューターに対する管理アクセス許可がない場合は、 [リモート デバッガー] アプリを右クリックし、 [管理者として実行] を選択します。 それ以外の場合は、通常どおり開始します。

    管理者として実行されているプロセス、または別のユーザー アカウント (IIS など) で実行されているプロセスにアタッチする場合は、 [リモート デバッガー] アプリを右クリックし、 [管理者として実行] を選択します。 詳細については、「管理者としてリモート デバッガーを実行する」を参照してください。

  2. リモート デバッガーを初めて (またはその構成を完了する前に) 開始すると、リモート デバッグ構成ウィザードが表示されます。

    ほとんどのシナリオでは、ウィザードの [Windows ファイアウォール の構成] ページが表示されるまで、[次へ] を選択します。

    Screenshot of remote debugger configuration.

    Screenshot of remote debugger configuration.

    Windows Web Services API がインストールされていない場合 (これは、Windows Server 2008 R2 でのみ発生します) は、[インストール] ボタンを選択します。

  3. リモート ツールを使用するネットワークの種類を少なくとも 1 つ選択します。 コンピューターがドメインを介して接続されている場合は、最初の項目を選択する必要があります。 コンピューターがワークグループまたはホーム グループを介して接続されている場合は、必要に応じて、2 番目または 3 番目の項目を選択します。

    次に、[完了] を選択してリモート デバッガーを起動します。

    次に、[リモート デバッグの構成] を選択してリモート デバッガーを起動します。

  4. 構成が完了すると、[リモート デバッガー] ウィンドウが表示されます。

    Screenshot of remote debugger window

    Screenshot of remote debugger window

    リモート デバッガーは接続を待機しています。 表示されているサーバー名とポート番号を使用して、Visual Studio でリモート接続構成を設定します。

リモート デバッガーを停止するには、 [ファイル]>[終了] を選択します。 リモート デバッガーを再起動するには、 [スタート] メニューを使用するか、またはコマンド ラインから次のコマンドを実行します。

<Remote debugger installation directory>\msvsmon.exe

注意

追加のユーザーのアクセス許可を追加し、認証モード、またはリモート デバッガーのポート番号を変更する必要がある場合は、「リモート デバッガーを構成する」を参照してください。

プロジェクトをリモート デバッグする

デバッガーでは、Visual C# または Visual Basic のデスクトップ アプリケーションをリモート コンピューターに配置できませんが、次のようにリモートからそれらのデスクトップ アプリケーションをデバッグすることはできます。 以下の手順では、次の図のように、MJO-DL という名前のコンピューターでこのようなデスクトップ アプリケーションをデバッグすることを想定しています。

  1. MyWpf という名前の WPF プロジェクトを作成します。

    WPF ではなく MAUI アプリをリモート デバッグする場合は、「Windows で .NET MAUI アプリをリモート デバッグする」をご覧ください。

  2. ブレークポイントをコード内の達しやすい任意の箇所に設定します。

    たとえば、ブレークポイントをボタン ハンドラーに設定できます。 これを行うには、MainWindow.xaml を開き、ツールボックスから Button コントロールを追加した後、ボタンをダブルクリックしてそのハンドラーを開きます。

  3. ソリューション エクスプローラーでプロジェクトを右クリックし、[プロパティ] を選択します。

  4. [プロパティ] ページで、[デバッグ] タブをクリックします。

    .NET Core または .NET 5 以降をターゲットにする C# プロジェクトの場合、Visual Studio 2022 からは、[デバッグ] タブから [デバッグ起動プロファイル UI] を選択し、リモート デバッグの設定を構成します。

    Screenshot of the Debug launch profile UI in the Visual Studio Project Properties for C# and .NET.

    それ以外の場合、 [デバッグ] タブでリモート デバッグ設定を直接変更します。

    Screenshot of the Debug tab in the Visual Studio Project Properties. The Use remote machine property is set to 'MJO-DL:4022'.

  5. [作業ディレクトリ] テキスト ボックスが空であることを確認してください。

  6. [リモート コンピューターを使用する] をオンにして、テキスト ボックスに「yourmachinename:port」と入力します。 (ポート番号がリモート デバッガー ウィンドウに表示されます。ポート番号は、Visual Studio のバージョンごとに 2 ずつ増分されます)。

    この例では、以下を使用します。

    Visual Studio 2022 の MJO-DL:4026

    MJO-DL:4024 (Visual Studio 2019)

  7. [ネイティブ コードのデバッグを有効にする] がオフであることを確認します。

  8. プロジェクトをビルドします。

  9. Visual Studio コンピューター上の Debug フォルダー (<source path>\MyWPF\MyWPF\bin\Debug) と同じパスのフォルダーをリモート コンピューター上に作成します。

  10. 上で作成した実行可能ファイルを、Visual Studio コンピューターから、リモート コンピューター上の新しく作成したフォルダーにコピーします。

    注意

    コードを変更したり、リビルドを行ったりしないでください (行うと、このステップを繰り返す必要があります)。 リモート コンピューターにコピーした実行可能ファイルは、ローカルのソースとシンボルに正確に一致している必要があります。

    プロジェクトは手動でコピーすることも、XCopy、Robocopy、PowerShell、その他のオプションを使用することもできます。

  11. ターゲット コンピューターでリモート デバッガーが実行されていることを確認します (実行されていない場合は、[スタート] メニューでリモート デバッガーを検索します)。 リモート デバッガー ウィンドウは次のような外観です。

    Screenshot of remote debugger window for VS 2022.

    Screenshot of remote debugger window for VS 2019.

  12. Visual Studio でデバッグを開始します ([デバッグ] > [デバッグの開始]、または F5 キー)。

  13. メッセージが表示されたら、リモート コンピューターに接続するためのネットワーク資格情報を入力します。

    必要な資格情報は、ネットワークのセキュリティ構成によって異なります。 たとえば、ドメイン コンピューターでは、ドメイン名とパスワードを入力できます。 ドメイン以外のマシンでは、マシン名と有効なユーザー アカウント名 (MJO-DL\name@something.com など) を正しいパスワードと共に入力します。

    WPF アプリケーションのメイン ウィンドウがリモート コンピューター上で開いていることを確認できるはずです。

  14. 必要に応じて、ブレークポイントにヒットするためのアクションを実行します。 ブレークポイントがアクティブになっていることを確認できるはずです。 ブレークポイントがアクティブでない場合、アプリケーションのシンボルが読み込まれていません。 再試行してもうまくいかない場合、シンボルの読み込みと、それらのトラブルシューティング方法については、「シンボル ファイルおよび Visual Studio のシンボルの設定について」を参照してください。

  15. Visual Studio コンピューターで、実行がブレークポイントで停止したことを確認できるはずです。

    アプリケーションで使用する必要がある、コード以外のファイルがある場合は、Visual Studio プロジェクトに含める必要があります。 追加のファイル用のプロジェクト フォルダーを作成します (ソリューション エクスプローラーで、[追加] > [新しいフォルダー] をクリックします)。 次にファイルをそのフォルダーに追加します (ソリューション エクスプローラーで、[追加] > [既存の項目] の順にクリックしてからファイルを選択します)。 ファイルごとの [プロパティ] ページで、[出力ディレクトリにコピー][常にコピーする] に設定します。

Windows で .NET MAUI アプリをリモート デバッグする

.NET MAUI アプリはパッケージ化されたアプリであり、デプロイするときは、リモート マシンにコピーするだけでなく、登録する必要があります。 リモート デバッグするには、パッケージ化されていないバージョンのアプリをデプロイできます。

リモート デバッグするには、次のいずれかの方法を使います。

  • Windows用のパッケージ化されていない .NET MAUI アプリの CLI を使用した発行に関する記事で説明されている手順を使って、アプリをパッケージ化されていないアプリとしてリモート デバイスに発行した後、この記事の手順のようにしてリモート デバッグします。 (アプリをコピーする手順をスキップします)。

  • プロジェクトのデバッグ起動プロファイルの作成手順も含めて、この記事の手順のようにします。 デバッグを始める前に、launchSettings.json ファイルを手動で編集し、次に示すように、commandNameProject の値を MsixPackage に置き換えます。

    "Remote Profile": {
      "commandName": "MsixPackage",
      "remoteDebugEnabled": true,
      "remoteDebugMachine": "170.200.20.22",
      "authenticationMode": "None"
    }
    

    デバッグを始めると、このメソッドは最初にパッケージ化されていないバージョンのアプリをデプロイして起動します。

    Note

    値を MsixPackage に変更した後は、デバッグ起動プロファイルのダイアログ ボックスで launchSettings.json を編集できなくなります。

リモート シンボルを使用したデバッグのセットアップ

Visual Studio コンピューターで生成したシンボルを使用して、コードをデバッグすることができます。 リモート デバッガーのパフォーマンスは、ローカル シンボルを使用すると大幅に向上します。 リモート シンボルを使用する必要がある場合、リモート マシン上のシンボルを探すように、リモート デバッグ モニターに指示する必要があります。

次の msvsmon コマンドライン スイッチを使用して、マネージド コードにリモート シンボルを使用できます: Msvsmon /FallbackLoadRemoteManagedPdbs

詳細については、リモート デバッグのヘルプ (リモート デバッガーのウィンドウで F1 キーを押すか、[ヘルプ] > [使い方] の順にクリックします) を参照してください。