2015年6月5日金曜日

C# のクライアントアプリケーションをリモートデバッグする(VisualStudio 2013でのリモートデバッグ方法)

開発PCとは別のリモートPC上で実行したC#のWindowsアプリケーション(コンソールアプリケーション、もしくはWinForms、WPFアプリケーション)を、リモートデバッグする方法を、備忘録を兼ねてまとめてみました。

(※ ここで、開発PCとリモートPCとは、有線または無線で、同一のサブネット内に接続されているものとしています。)

Windowsストアアプリを作る場合や、C++でアプリケーションを作る場合とは、設定画面などに異なる点があったため、ネット上の情報を参考にする際は少しだけ注意が必要です。(下記公式資料が一番確実です。以下は、公式資料の補足説明といった位置づけになります。)


ざっくりとした概略

手順

前準備(リモートPC側)

  1. リモートPCに、Remote Tools for Visual Studio 2013をインストール
    ※参考: https://msdn.microsoft.com/ja-jp/library/bt727f1t.aspx
  2. アプリケーションの一覧から、Remote Debuggerを実行
  3. インストール後、「リモートデバッグの構成」画面が表示されるのでいい感じに設定する。
    (閉じたネットワーク内でリモートデバッグするのであれば、デフォルトでOK。)
  4. 自動的に、Visual Studio リモートデバッグモニター が起動すればOKです。
注意点: C#のWindowsアプリケーションをリモートデバッグする場合、認証方式は「Windows認証」(デフォルト設定)にする必要があります。「認証なし」を選択すると、Visual Studioからリモート接続できなくなります。

前準備(開発PC側)

ここでは、C#でWindowsアプリケーション(コンソールアプリケーション)を作る場合を説明します。
  1. プロジェクトのプロパティ→「デバッグ」の設定画面で
    「リモートコンピュータを利用する」にチェックを入れ、リモートコンピュータを指定

    マシン名で接続できる場合は、マシン名を入力します。

    今回はネットワーク構成の都合上、マシン名でのアクセスができないため、IPアドレスを使って接続しています。IPアドレスで指定する場合、『IPアドレス:接続ポート番号』の形式で入力します。
  2. 「作業ディレクトリ」は空に。

リモートデバッグの準備

  1. 開発PCでDEBUG ビルドを行い、アプリケーション(exeファイル)を生成します。
  2. リモートPCに、開発PCと同じディレクトリ構成を構築し、開発PCで生成したアプリケーションをコピーします。
    例) 開発PCで、 C:\Project\app1\app1\bin\Debug にアプリケーションが生成される場合、リモートPCにも、C:\Project\app1\app1\bin\Debug というフォルダを作成し、その中に、開発PCで生成したアプリケーションをコピーします。

リモートデバッグの開始

開発PCで、デバッグを実行(F5を押すとか)します。

初回接続時は、認証画面が表示されるのでリモートPCの管理者権限を有するアカウントでログインすればOKです。

あとは、ふつうにデバッグができます。

補足:もっと手軽にリモートデバッグ

C#のWindowsアプリケーションを、リモートデバッグする場合には、開発PCとリモートPCとで、同一のフォルダ構成を作成する必要があるようです。

また、ビルドのたびにアプリケーションをコピーする手間がかかります。

公式資料の手順とはいえ、この手順、メンドくさすぎます。


というわけで、開発PCとリモートPCのどちらからもアクセス可能な共有フォルダ(もしくはネットワークドライブ)を用意し、Visual Studioのビルド時の「出力パス」を共有フォルダ上に設定すれば、(フォルダ構成の再現や、アプリケーションのコピーの手間なしに)デバッグを実行するだけで、リモートデバッグが可能になるかと思います。未検証。

参考資料