特集

Visual Studio 2005がやってきた(後編)

VS 2005で変革されたASP.NET、Windowsフォーム、ADO.NETを総覧

山田 祥寛(http://www.wings.msn.to/
2006/01/25

Page1 Page2 Page3

 前編そして中編では、Visual Studio 2005(以降、VS 2005)そのものが提供する新機能をはじめ、VS 2005でバージョン・アップされた開発言語Visual Basic 2005とC# 2.0の新仕様を総括した。

 後編となる今回は、.NET FrameworkやASP.NET、Windowsフォーム、ADO.NETの新機能について総覧してみることにしよう。

.NET Framework 2.0の新機能

 いまさらいうまでもなく、.NET Frameworkはすべての.NETアプリケーションの動作を支える基本プラットフォームである。これはアプリケーションの実行エンジンであるCLR(Common Language Runtime)からVisual BasicやC++などの言語、そしてこれら言語から共通して利用可能な基本クラス・ライブラリを含む。

 .NET Frameworkに関する詳細は以下の記事が詳しいので、興味のある方は併せて参照いただきたい。.NET Frameworkもまた、VS 2005とともに2.0にバージョン・アップされ、いくつかの重要な機能追加が行われている。

インサイド .NET Framework[改訂版]

■標準ビルド・エンジン「MSBuild」の搭載

 MSBuild(Microsoft Build Engine)は、.NET Framework 2.0から新たに提供されたビルド・エンジンだ。Java言語による開発を行ったことがある方ならば、恐らく一度はApache Antを利用したことがあるのではないだろうか。至極単純化してしまうならば、MSBuildは.NET版Antだといってもよいだろう。

 開発プロジェクトによっては、必ずしもすべての環境にVS 2005をインストールできるとは限らないが、MSBuildを利用することで、VS 2005がインストールされていない環境でも、アプリケーションのビルドを自動化できる。

 MSBuildにおいてビルドの方法を定義する「プロジェクト・ファイル」(拡張子「.proj」)は、<Project>要素をルート要素とするXML形式で記述できる。以下に、C#で記述されたソース・コード「Hello.cs」をコンパイルし、実行形式「Hello.exe」を作成する、ごく基本的なプロジェクト・ファイルの例を示してみよう。

<?xml version="1.0" encoding="Shift_JIS" ?>
<Project
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
    DefaultTargets="compile">
  <Target Name="compile">
    <Csc Sources="Hello.cs" OutputAssembly="Hello.exe" />
  </Target>
</Project>
MSBuild用プロジェクト・ファイルの記述例(msbuild.proj)
このファイルはhello.csをコンパイルしてhello.exeを作成するためのもの。

 <Project>要素には、0個以上の項目(入力アイテム)とプロパティ(変数)、そして、1個以上のターゲットが含まれる。ターゲットとは、配下に1個以上のタスクを含む手続きの集合だ。ここではHello.csのコンパイルを行う“compile”ターゲットが1つ含まれるだけのごく単純なプロジェクト・ファイルであるが、実際にはターゲット間に依存関係を設定したり、ビルド時に必要な情報のロギングを行ったりと、従来のバッチ・ファイルやメイク・ファイルを利用するのに比べて、はるかに柔軟な制御が簡単に記述できる。

 VS 2005がプロジェクトをコンパイルする場合は内部的にこのMSBuildを利用するが、コマンド・プロンプトからでもmsbuildコマンドは実行可能だ。以下は上記のプロジェクト・ファイルをビルドした画面である。

MSBuildによるプロジェクト・ファイルの実行
プロジェクト・ファイルを明示的に指定しなかった場合、msbuildコマンドはカレント・フォルダから拡張子が「proj」で終わるファイルを自動的に検索して使用する。

■.NET Framework 2.0で追加されたクラス・ライブラリ

 .NET Framework 2.0では共通クラス・ライブラリも大幅に強化されている。もちろん、そのすべてを本稿で紹介することはできないが、特に注目しておきたいクラス(名前空間)をいくつか紹介しておこう。

 System.Net名前空間では、FtpWebRequest/FtpWebResponseクラスが追加された。FtpWebRequest/FtpWebResponseクラスはFTP(File Transfer Protocol)によるファイル転送機能をほぼ包括的にサポートしており、FTP機能を簡単にアプリケーションに実装できるようになった。

 .NET Framework 2.0で新たに追加されたSystem.IO.Compression名前空間にも要注目だ。配下に用意されたDeflateStream/GZipStreamクラスを利用することで、ストリームやファイルの圧縮/解凍処理を行うことができる。

 XMLデータを操作するためのSystem.Xml名前空間も大幅に強化された。XPathNavigatorクラスにはAppendChild、InsertBeforeなどの更新系メソッドが追加され、メモリ上のXMLデータを更新することが可能になったほか、新しいXslCompiledTransformクラスを利用することで従来のXslTransformクラスよりも高速なXSLT変換が可能になる。

 また、XmlReader、XmlWriter、XPathNavigatorの各クラスにおいて、型サポートが追加されたのも注目だ。新たに追加されたReadContentAs/ReadElementContentAs(読み取り)、WriteValueメソッドなどを利用することで、もはやCLR型とXMLスキーマ型との相互変換にXmlConvertクラスを利用する必要はなくなる。

 そのほか、ASP.NET、Windowsフォーム、ADO.NET関連でも多数のクラス・ライブラリが追加されているが、これらについてはあらためて後述したい。なお、新規機能の追加によって、.NET Framework 2.0で非推奨となった機能も多く存在する。非推奨APIについては、以下のページが詳しいので、併せて参照されたい。

.NET Framework V2.0 Obsolete API List


 INDEX
  [特集]Visual Studio 2005がやってきた(前編)
  さらに進化した統合開発環境の主要な新機能を総括
    1.VS 2005で作成可能なアプリケーションの種類
    2.統合開発環境としての新機能(1)
    3.統合開発環境としての新機能(2)
   
  [特集]Visual Studio 2005がやってきた(中編)
  VS 2005で新しくなったVisual BasicとC#の新機能を総括
    1.VS 2005で使用可能な言語/部分クラス/ジェネリック
    2.Nullable型/プロパティのアクセシビリティ/My機能/Usingステートメント/既定インスタンス
    3.反復子(イテレータ)/匿名メソッド/静的クラス
   
  [特集]Visual Studio 2005がやってきた(後編)
  VS 2005で変革されたASP.NET、Windowsフォーム、ADO.NETを総覧
  1. .NET Framework 2.0の新機能
    2. ASP.NET 2.0の新機能
    3. Windowsフォーム 2.0の新機能&ADO.NET 2.0の新機能
 


Insider.NET フォーラム 新着記事
  • 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間