.NET TIPS ClickOnceアプリケーションをデバッグするには?[VS 2005のみ、2.0のみ、C#、VB]デジタルアドバンテージ 一色 政彦2006/10/06 |
|
|
開発しているClickOnceアプリケーション(以降、ClickOnceアプリ)が、例えば「ClickOnceの真実 第4回 ClickOnceテクノロジを最大限に生かす開発」で紹介されているサンプル・プログラムのように、ClickOnceデプロイメントAPIを活用して何らかの配布・更新処理を実装している場合、その処理の検証やデバッグは通常の方法では行えない。
これらを行うには、ClickOnceアプリが配置された状態でデバッグしなければならないためだ。つまり、Webページ上のリンクをクリックして起動した状態のClickOnceアプリをデバッグする必要があるのだ(もちろんClickOnceアプリはデバッグ・モードでビルドして発行したものをデバッグする)。
このような起動中のアプリケーションをデバッグする方法には、主に次の2つがある。
- プロセスにアタッチしてデバッグ
- System.Diagnostics.Debugger.Breakメソッドによるデバッグ・ブレイク
本稿ではこの2つの方法により、ClickOnceアプリのデバッグを行う方法を紹介する。ここではVisual Studio 2005(以降、VS 2005)を使うことを前提とする。
なお以下で詳しく説明するが、ClickOnceのセキュリティ設定が「完全信頼」(Full Trust)か「部分信頼」(Partial Trust)かによって、若干デバッグ方法が異なるので、その違いに注意してほしい。また、部分信頼のセキュリティ環境での動作を検証・デバッグすることが目的の場合には、別のデバッグ方法も用意されている。これについてはあらためて後日公開予定のTIPSで紹介しよう。
1. プロセスにアタッチしてデバッグ
配置されたClickOnceアプリをデバッグする最も単純な方法は、実行中のClickOnceアプリのプロセスにアタッチすることである。
ここで注意が必要なのが、ClickOnceアプリのプロセス名だ。完全信頼アプリケーションの場合は、プロジェクトのプロパティで指定した「アセンブリ名」+「.exe」という名前になる。しかし部分信頼アプリケーションの場合、常に「AppLaunch.exe」というプロセス名になる(※この理由については「ClickOnceの真実 第2回 ClickOnceの仕組みを理解しよう」を読めばご理解いただけるだろう)。
従って、完全信頼のClickOnceアプリのプロセスにアタッチするには、次の画面のような手順になる。
一方、部分信頼のClickOnceアプリの場合は次の画面のようになる。
部分信頼のClickOnceアプリのプロセスにアタッチする手順 |
部分信頼アプリケーションの場合は、常に「AppLaunch.exe」というプロセス名になる。「<アプリケーション名>.exe」という名前のプロセスは存在しないので注意すること。 |
2. System.Diagnostics.Debugger.Breakメソッドによるデバッグ・ブレイク
上記の1の方法以外にも、プログラム・コードからデバッガのブレイク(=コード実行の中断)を呼び出すという手段が使える。ただしこれが利用可能なのは、完全信頼アプリケーションの場合だけなので注意すること。
具体的には、Debuggerクラス(System.Diagnostics名前空間)の静的メソッドBreakをコード中で呼び出せばよい。例えば次のようなコードになる。
|
||
デバッガのブレイクを呼び出すコード(上:C#、下:VB) |
なお、このSystem.Diagnostics.Debugger.Breakメソッドでデバッグ・ブレイクするコードはあくまでデバッグ・検証用のものなので、最終的な製品版に残らない(=消す)ように注意しなければならない。このコードで記述している「#if DEBUG 〜 #endif」や「#If DEBUG Then 〜 #End If」は、デバッグ・モードのプログラムにしかこのコードを含めないということを意味している(詳しくは「TIPS:テスト用コードをデバッグ時にのみ実行するには?」を参照されたい)。
上記のコードを含むClickOnceアプリを実行すると、その起動時(厳密にはWindowsフォームがロードされるとき)に、次のようなダイアログが表示され、ここからデバッグに使用するデバッガを選べる(※デバッガがアタッチされていない場合の挙動であり、VS 2005がそのClickOnceアプリのプロセスにアタッチされた状態のときは、このダイアログは表示されずに単にコードの実行をブレイクするという動作になる)。
デバッグに使用するデバッガ(=アタッチ先のデバッガ)の選択 |
VS 2005でデバッグしたいプロジェクトが開いている状態なら、それ(この例では「WindowsApplication1 - Microsoft Visual Studio: Visual Studio 2005」)を選択すればよい(推奨)。もし開いていない状態であれば、「新しいインスタンス Visual Studio 2005」を選択すればよい。「選択したデバッガを使ってデバッグしますか?」で[はい]を選択すると、実際にVS 2005を使ったデバッグを開始できる。 |
基本的には、あらかじめVS 2005でデバッグしたいプロジェクトを開いている状態にしておき、上記の[Visual Studio Just-In-Time デバッガ]ダイアログが表示されたら、処理を行うデバッガとしてそのVS 2005を選択すればよい。これにより、そのVS 2005にClickOnceアプリのプロセスがアタッチされるので、あとは通常どおりデバッグ作業が行える。
利用可能バージョン:.NET Framework 2.0のみ カテゴリ:Windowsフォーム 処理対象:ClickOnce 使用ライブラリ:Debuggerクラス(System.Diagnostics名前空間) 関連TIPS:テスト用コードをデバッグ時にのみ実行するには? |
|
「.NET TIPS」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|