|
.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」 |
TechTargetジャパン
- Kinectが切り開く“夢の近未来” (2012/2/2)
日本を含めた世界中でKinect for Windowsセンサー商用版とSDK正式版がリリース。未来のコンピューティングはどう変化するのか? - 3つの視点でネイティブと.NETの適材適所を考察 (2012/1/31)
アプリ開発は「ネイティブ」と「.NET」、どちらが最良? その問いには「適材適所」と答えるしかない。では、“適所”は一体どこかを考察する - SQL Azure Data Sync入門 (2012/1/30)
SQL Azure/SQL Serverデータベース間のデータ同期を簡単に実現するサービスとは? その仕組みや使用手順を解説 - Windows Phoneアプリ市場の現状を分析する (2012/1/27)
Windows Phone のアプリ・ストアに日々登録されている多種多様なアプリ。カテゴリ別のアプリ数は? 市場の現状を明らかにする
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -






