検索
特集

特集:Longhornアプリケーションの構築方法FTP Online(2/6 ページ)

Microsoftからリリースされた最近のOSとは異なり、Longhornは開発者に対して明確なインパクトを提供するだろう。ここでは、簡単なLonghornアプリケーションの構築方法について学んでいく(日本語訳:澤田侑尚) 。

PC用表示 関連情報
Share
Tweet
LINE
Hatena

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 MSBuildはいくつかの要素を含む。 その中で最初から知っておく必要があるのは、「Property」と「Item」、「Task」である。Propertyは重要なキーと値の組であり、その値の基となるのは、環境変数、コマンドラインスイッチ、プロジェクトファイル内のProperty要素から得られる。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 Itemは、ファイルの配列と考えればよい。Itemはワイルドカードを使用したり、特定のファイルを除外したりできる。MSBuildはItem要素のType属性を使用してItemを分類する。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

TasksとTargetsを掘り下げる

 Taskはビルドプロセスの最小単位のユニットである。Taskは、Property要素およびItem要素、単純な文字列から、入力パラメータを受け付けることができる。このTaskのName属性が、Taskを実行するために必要な.NETのビルドデータ型を特定する。Taskは、他の複数のTaskが利用するItemを提供できる。MSBuildは多くのTaskを含んでおり、その全てが.NETのツールタスクもしくは展開タスク、シェルタスクとして、大まかにカテゴライズされる。

 例えば、「Csc」というNameを持つTaskは、ビルドツールとしてC#コンパイラを呼び出す。C#コンパイラは、Source属性(Type属性がCompileのItem要素を指定する)で指定された全てのItem要素をコンパイルし、アウトプットとしてアセンブリを生成する。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 Targetはビルドプロセスにおいてタイムスタンプ分析を行うことができる、1つの論理ステップである。つまり、Targetは必要がなければ実行されないということである。Targetは要求された処理を実行するために、1つもしくは複数のTaskを実行する。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 Condition属性は、シンプルなifステートメントと大まかには同じである。Conditionは2つの文字列を比較したり、ファイルやディレクトリの存在を確認したりできる。Conditionは、プロジェクトファイル内の各種の要素に対して応用できる。例えば、Configurationプロパティが値としてDebugを持っている場合にのみ定義されるプロパティのグループは次のようになる。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 Importは、C/C++の#includeステートメントのようなものである。インポートされたプロジェクトの内容は、それが行われた時に、論理的にはインポートする側のプロジェクトの一部になる。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 ここまでで用語の解説は終りだ。以降は典型的なプロジェクトファイルを使って、実行可能なLonghornアプリケーションのビルドを確認してみよう(コラム2参照)。

コラム2:Longhornアプリケーションのビルド

 すべてのプロジェククトファイルは、Projectと名づけられたルート要素を用いて書き始める。そのDefaultTargets属性は、ユーザーがターゲットを指定しなかったときに、ビルドされるべきシステムのターゲット名を指定する。以下のサンプルでは、デフォルトでシステムがビルドすべきターゲット名としてBuildが指定されている。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 すべてのプロジェクトファイルは、Projectと名づけられたルート要素の定義で開始されている。DefaultTargets属性は、ターゲットが明示的に指定されない場合に、システムがビルドするターゲットの名前を指定する。プロパティの値をベースにして、ビルド規則は条件付きでの実行が可能である。

 なお、アプリケーションのプロジェクトは、少なくともLanguageおよびTargetNameのプロパティ値を指定する必要がある。コラム2のサンプルは、言語としてC#を指定し、アプリケーション名がMyAppになるように指定している。また、DefaultClrNameSpaceというプロパティの値も指定している。

© Copyright 2001-2005 Fawcette Technical Publications

ページトップに戻る