更新 : 2007 年 11 月
このトピックでは、タスクを使用して 1 つのファイルを含むプロジェクトをコンパイルする、単純な MSBuild プロジェクト ファイルを記述する方法について説明します。この例では 2 つのプロジェクト ファイルについて説明します。1 つは Visual Basic ソース ファイルをコンパイルし、もう 1 つは Visual C# ソース ファイルをコンパイルします。各プロジェクト ファイルの完全なソース コードは、トピック末尾にあります。
Project 要素の追加
Project 要素は、MSBuild プロジェクト ファイルのルート要素です。この要素では、プロジェクトの既定のターゲット セットを指定すると共に、プロジェクトをビルドするたびに最初に実行する開始ターゲットを指定できます。詳細については、「Project 要素 (MSBuild)」を参照してください。
Project 要素を追加するには
次のような XML を追加します。
<Project DefaultTargets="Compile" xmlns="https://schemas.microsoft.com/developer/msbuild/2003"> ... </Project>この Project 要素は、Compile ターゲットが既定のターゲットであることを指定します。
プロパティの追加
PropertyGroup 要素は、プロジェクト ファイルで何度も参照される値を含む Property 要素をグループ化したり、複数の設定で使用されるプロパティの値を設定したりするのに使用されます。プロパティの詳細については、「MSBuild プロパティ」および「Property 要素 (MSBuild)」を参照してください。
プロパティを追加するには
PropertyGroup 要素を追加します。Property 要素は PropertyGroup 要素の子である必要があります。
1 つ以上のプロパティを PropertyGroup 要素の子として追加します。
Property 要素では、その要素名に "Property" という単語を使用しません。その代わり、要素名はプロパティ名に基づき、プロパティの値は要素のテキスト値です。たとえば、次の XML は、appname プロパティの値を HelloWorldCS に設定します。
<PropertyGroup> <appname>HelloWorldCS</appname> </PropertyGroup>
項目の追加
ItemGroup 要素は、ビルド システムへの入力を定義する Item 要素をグループ化するのに使用されます。項目の詳細については、「MSBuild 項目」および「Item 要素 (MSBuild)」を参照してください。
項目を追加するには
ItemGroup 要素を追加します。Item 要素は ItemGroup 要素の子である必要があります。
1 つ以上の項目を ItemGroup 要素の子として追加します。Include 属性を使用して、ビルド システムへの入力として含めるファイルを指定します。
Item 要素では、その要素名に "Item" という単語を使用しません。その代わり、要素名は各項目を含む項目のコレクションに基づきます。たとえば、プロジェクトに複数のソース ファイルおよび複数のリソース ファイルが含まれる場合、すべてのソース ファイルを SourceFile という名前の項目のコレクションに追加し、すべてのリソース ファイルを ResourceFile という名前のコレクションに追加します。こうすると、より簡単に項目のグループをタスクに渡すことができます。
たとえば、次の XML は、ファイル consolehwcs1.cs を CSFile 項目のコレクションに含めます。
<ItemGroup> <CSFile Include="consolehwcs1.cs"/> </ItemGroup>VB プロジェクトの場合は、項目のコレクションに VBFile のようにわかりやすい名前を付けることができます。
<ItemGroup> <VBFile Include="consolehwvb1.vb"/> </ItemGroup>
ターゲットの追加
ターゲットは、タスクを特定の順序でグループ化し、プロジェクト ファイルの各セクションを、ビルド プロセスのエントリ ポイントとして公開する役割を果たします。Target 要素はターゲットを定義するのに使用され、MSBuild が連続して実行するタスクのセットを含みます。ターゲットの詳細については、「MSBuild ターゲット」および「Target 要素 (MSBuild)」を参照してください。
ターゲットを追加するには
Target 要素を、Name 属性で指定されている名前で追加します。たとえば、次のターゲットには Compile という名前が付けられます。
<Target Name="Compile">...</Target>
タスクの追加
タスクとは、実行可能コードにおいて、MSBuild によるビルド処理の実行単位を表すものです。Task 要素は、実行するタスクおよびタスクに渡すパラメータを指定します。MSBuild と共に一般的なタスクのライブラリが提供されていますが、独自にタスクを記述することもできます。タスクの詳細については、「MSBuild タスク」および「Task 要素 (MSBuild)」を参照してください。MSBuild と共に提供されている一般的なタスクの詳細については、「MSBuild タスク リファレンス」を参照してください。
Visual C# プロジェクトをコンパイルするには、Csc タスクを使用します。Visual Basic プロジェクトをコンパイルするには、Vbc タスクを使用します。これらのタスクはどちらも、MSBuild と共に提供されている一般的なタスクのライブラリの一部です。
タスクを追加するには
タスクを Target 要素の子として追加します。
Task 要素では、その要素名に "Task" という単語を使用しません。その代わり、要素名はタスクそのものの名前です。
タスクに必要な属性を追加します。
一部のタスクはパラメータを受け取ります。これらのパラメータは、Task 要素の属性を介してタスクに渡されます。
次の例は、Visual C# プロジェクトをコンパイルし、CSFile 項目のコレクションをタスクの Sources パラメータに渡します。
メモ :@() 表記を使用して、項目のコレクション全体をパラメータとして指定します。
<CSC Sources="@(CSFile)">...</CSC>次の例は、Visual Basic プロジェクトをコンパイルし、VBFile 項目のコレクションをタスクの Sources パラメータに渡します。
<VBC Sources="@(VBFile)">...</VBC>
タスクの出力の追加
一部のタスクの属性は、タスクの出力用に定義して、後からプロジェクト ファイルでそれらの出力を参照できます。Output 要素はタスクの出力を指定するのに使用され、出力を項目のコレクションまたはプロパティに割り当てることができます。タスクの出力の詳細については、「MSBuild タスク」および「Output 要素 (MSBuild)」を参照してください。
タスクの出力を追加するには
Task 要素の子として Output 要素を作成します。
Output 要素の TaskParameter 属性を、出力として使用する属性と、値の保存先とする ItemName または PropertyName 属性と同じ値に設定します。
次の例は、Visual C# プロジェクトをコンパイルし、CSFile 項目のコレクションをタスクの Sources パラメータに渡し、OutputAssembly パラメータの値を EXEFile 項目のコレクションに保存します。
メモ :$() 表記を使用して、プロパティをパラメータとして指定します。
<CSC Sources="@(CSFile)" WarningLevel="$(WarningLevel)"> <Output TaskParameter="OutputAssembly" ItemName="EXEFile"/> </CSC>次の例は、Visual Basic プロジェクトをコンパイルし、VBFile 項目のコレクションをタスクの Sources パラメータに渡し、OutputAssembly パラメータの値を EXEFile 項目のコレクションに保存します。
<VBC Sources="@(VBFile)" WarningLevel="$(WarningLevel)"> <Output TaskParameter="OutputAssembly" ItemName="EXEFile"/> </VBC>
メッセージの追加
現在のターゲットやタスクなどの一部のステータス情報は、MSBuild によって、ビルドの進行状況として自動的に記録されます。また、Message タスクを使用して、追加情報を提供できます。
メッセージを追加するには
Target 要素の子として Message タスクを追加します。
メッセージ テキストを Message タスクの Text パラメータに追加します。
次の例は、前の例で Output 要素を使用して作成した項目のコレクションの名前を記述するメッセージを作成します。
<Message Text="The output file is @(EXEFile)"/>
プロジェクト ファイルへのコメントの追加
MSBuild プロジェクト ファイルのコメントは、XML ファイルのコメントの標準の形式で記述されます。
コメントを追加するには
「<!--」と入力して、コメントを開始します。
コメントのテキストを記述します。
「-->」と入力して、コメントを終了します。
次の例は、XML ファイルにコメントを追加します。
<!-- Your comment -->
プロジェクトのビルド
MSBuild プロジェクト ファイルをビルドするには、MSBuild.exe を使用します。MSBuild.exe の詳細については、「MSBuild コマンド ライン リファレンス」を参照してください。
プロジェクトをビルドするには
プロジェクト ファイルが含まれているディレクトリに移動し、次のように入力します。
msbuild <file name>.proj
使用例
次の例は、Visual C# アプリケーションをコンパイルするプロジェクト ファイルを表示し、出力ファイル名を含むメッセージを記録します。
<Project DefaultTargets = "Compile"
xmlns="https://schemas.microsoft.com/developer/msbuild/2003" >
<!-- Set the application name as a property -->
<PropertyGroup>
<appname>HelloWorldCS</appname>
</PropertyGroup>
<!-- Specify the inputs by type and file name -->
<ItemGroup>
<CSFile Include = "consolehwcs1.cs"/>
</ItemGroup>
<Target Name = "Compile">
<!-- Run the Visual C# compilation using input files of type CSFile -->
<CSC
Sources = "@(CSFile)"
OutputAssembly = "$(appname).exe">
<!-- Set the OutputAssembly attribute of the CSC task
to the name of the executable file that is created -->
<Output
TaskParameter = "OutputAssembly"
ItemName = "EXEFile" />
</CSC>
<!-- Log the file name of the output file -->
<Message Text="The output file is @(EXEFile)"/>
</Target>
</Project>
次の例は、Visual Basic アプリケーションをコンパイルするプロジェクト ファイルを表示し、出力ファイル名を含むメッセージを記録します。
<Project DefaultTargets = "Compile"
xmlns="https://schemas.microsoft.com/developer/msbuild/2003" >
<!-- Set the application name as a property -->
<PropertyGroup>
<appname>HelloWorldVB</appname>
</PropertyGroup>
<!-- Specify the inputs by type and file name -->
<ItemGroup>
<VBFile Include = "consolehwvb1.vb"/>
</ItemGroup>
<Target Name = "Compile">
<!-- Run the Visual Basic compilation using input files of type VBFile -->
<VBC
Sources = "@(VBFile)"
OutputAssembly= "$(appname).exe">
<!-- Set the OutputAssembly attribute of the VBC task
to the name of the executable file that is created -->
<Output
TaskParameter = "OutputAssembly"
ItemName = "EXEFile" />
</VBC>
<!-- Log the file name of the output file -->
<Message Text="The output file is @(EXEFile)"/>
</Target>
</Project>
参照
概念
MSBuild プロジェクト ファイル スキーマ リファレンス