特集 より洗練されたVisual Studio .NET 2003の新機能を探る 株式会社ピーデー川俣 晶 2003/06/03 |
|
|
デバッグ/ビルドに関する新機能
エディタにおける機能拡張に加え、統合開発環境の重要な要素であるデバッグおよびビルド作業にもいくつかの改善が行われている。
■デバッガにおける配列やハッシュテーブルの表示改善
例えば、こんなプログラム(の一部)があったとしよう。
Hashtable hashTable = new Hashtable();
hashTable.Add("ABC","abc");
hashTable.Add("DEF","def");
hashTable.Add("GHI","ghi");
この直後にブレークポイントを設定して、hashTableの値をクイック・ウォッチで表示させると、VS.NET 2002ではこんな内容が表示される。
VS.NET 2002の「クイック・ウォッチ」ウィンドウ |
プログラムの実行を一時停止させ、「クイック・ウォッチ」により指定した変数の内容を見ることができる。 |
これはHashtableオブジェクトの内部構造がそのまま見えているのであって、Hashtableにどんな値が入っているか一見して分からない。込み入った構造を持つ特殊なユーザー定義のクラスなら、こんな表示でもやむを得ないかもしれない。しかし、HashtableやArrayList(ともにSystem.Collections名前空間にある)といえば、多くのプログラムで多用される標準的なコレクション・クラスである。内容がすぐ分かればうれしいわけだが、VS.NET 2003ではそれが実現されている。同じ内容をVS.NET 2003でクイック・ウォッチした結果は以下のようになる。
VS.NET 2002の「クイック・ウォッチ」ウィンドウ |
HashtableクラスやArrayListクラスなどの基本的なコレクション・クラスについては、この画面のようにプログラマーが本当に見たい情報がまず表示されるようになった。 |
実装の構造は見えず、格納されているキーと値だけが表示されているのが分かる。これで、標準のコレクションを使ったプログラムのデバッグが、やりやすくなった。
■デバッガのイミディエイト・ウィンドウでもIntelliSenseが利用可能に
デバッガのイミディエイト・ウィンドウは、コマンドラインのユーザー・インターフェイスでデバッグ操作を行う機能を提供してくれる。昔ながらのコマンドラインのデバッガを彷彿とさせて懐かしいが、それだけでなく、これを使った方が効率のよい作業もあり、使い込むと手放せない存在である。しかし、1つ悩ましいことは、イミディエイト・ウィンドウ内ではIntelliSenseが機能しないことであった。例えば、文字列の長さを表示させる場合、変数名がsとすると、“?s.Length”+[Enter]キーと入力することになるが、「Length」と6文字も打つのは面倒だし、綴りを間違えるとエラーになってしまう。しかし、VS.NET 2003では、イミディエイト・ウィンドウでもIntelliSenseが有効になった、以下の例では、“?s.”と打った瞬間に、使用可能なメソッドなどのリストが表示されている。
イミディエイト・ウィンドウ内でのIntelliSense |
イミディエイト・ウィンドウでは、キーボードから入力したコマンドによりデバッグを行う。VS.NET 2003ではこのウィンドウ内でもIntelliSenseが働くようになった。 |
これでもうLengthと正直にすべて入力する必要はなくなり、“l”に続けてEnterキーで「Length」が入力されるようになった。
■Visual C#プロジェクトのビルド・イベント
Visual C#のプロジェクトでは、ビルドの前後に指定したプログラムを実行させるビルド・イベントの機能がサポートされた。
以下のように、プロジェクトのプロパティに項目が増えている。そこに、単にメッセージを出力するだけのコマンドを書き込んでみた。
プロジェクトのプロパティに追加された「ビルド・イベント」 |
ビルド・イベントには、アプリケーションのビルドの前と後に実行されるコマンドやアプリケーションを設定することができる。 |
この状態でビルドすると、出力ウィンドウには以下のような内容が出力される。
ビルド前のイベント を実行しています...
ビルドを開始します
リソースを準備しています...
参照を更新しています...
メイン コンパイルを実行しています...
ビルドの完了 -- エラー 0、警告 0
サテライト アセンブリをビルドしています...
ビルド後のイベント を実行しています...
ビルドは終わりました
「ビルドを開始します」と「ビルドは終わりました」の2つは、もちろん、ここで設定したコマンドが出力したものである。ここにメッセージ出力ではなく、何か有益な仕事をするコマンドを書き込めば、いろいろな応用が可能になるだろう。
■必要なプロジェクトのみのビルド
VS.NET 2002は、1つのソリューションの中に複数のプロジェクトを持つことができる。この構造はVS.NET 2003でも同じである。しかし、あるプロジェクトをデバッグ実行する際に、同じソリューションに属するすべてのプロジェクトが必要とされるわけではない。[F5]キーを押すなどしてデバッグ実行を開始する際、毎回すべてのプロジェクトをビルドすることは時間の無駄である。VS.NET 2003はその問題を改善する機能を提供している。
この機能を有効にするには、以下の手順で行う。[ツール]メニューの[オプション]で開くダイアログボックスの中で、[環境]の[プロジェクトおよびソリューション]を開く。すると、中に[実行時に、スタートアップ プロジェクトおよび依存関係のみをビルドする]というチェック・ボックスがある。これをチェックするとその機能が有効となり、実行開始に依存関係のないプロジェクトはビルドされなくなる。
VS.NET 2003の[オプション]ダイアログボックス |
一番下にある[実行時に、スタートアップ プロジェクトおよび依存関係のみをビルドする]をチェックすると、ソリューション内のすべてのプロジェクトでなく、最低限必要なプロジェクトのみがビルドされるようになる。これにより、デバッグ時のビルド時間を短縮することができる。 |
大規模な開発だけでなく、「テスト・ファースト」による開発を行っていると、本体のデバッグ実行には必要のない単体テストのプロジェクトが同じソリューション内に存在することも珍しくないだろう。そういう場合に、ビルド時間を節約することができる(テスト・ファーストに関しては「NUnit入門 Test Firstのススメ [NUnit2.0対応版]」などを参照していただきたい)。
INDEX | ||
[特集]より洗練されたVisual Studio .NET 2003の新機能を探る | ||
1.Visual Studio .NET 2003の概要 | ||
2.より便利になったIntelliSense機能 | ||
3.デバッグ/ビルドに関する新機能 | ||
4.VB.NETとC#の追加機能・仕様変更 | ||
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|