ビルドするファイルを選択する

複数のファイルを含むプロジェクトをビルドするときに、各ファイルを個別にプロジェクト ファイルにリストしたり、ワイルドカードを使用して、1 つのディレクトリまたは入れ子になった一連のディレクトリ内のすべてのファイルを含めたりすることができます。

入力を指定する

項目は、ビルドの入力を表します。 項目の詳細については、「MSBuild 項目」をご覧ください。

ビルドにファイルを含めるには、それらが MSBuild プロジェクト ファイルの項目一覧に含まれている必要があります。 複数のファイルを項目リストに追加するには、ファイルを個別に含めるか、ワイルドカードを使用して一度に複数のファイルを含めます。

項目を個別に宣言するには

  • 次のような Include 属性を使用します。

    <CSFile Include="form1.cs"/>

    or

    <VBFile Include="form1.vb"/>

    Note

    項目コレクション内の項目がプロジェクト ファイルと同じディレクトリにない場合は、その項目への完全パスまたは相対パスを指定する必要があります。 たとえば、Include="..\..\form2.cs" のように指定します。

複数の項目を宣言するには

  • 次のような Include 属性を使用します。

    <CSFile Include="form1.cs;form2.cs"/>

    or

    <VBFile Include="form1.vb;form2.vb"/>

ワイルドカードを使用して入力を指定する

ワイルドカードを使用して、すべてのファイルまたはサブディレクトリから特定のファイルのみを再帰的に含めることができます。 ワイルドカードの詳細については、「MSBuild 項目」をご覧ください。

次の例は、次のディレクトリとサブディレクトリ内のグラフィック ファイルを含むプロジェクトに基づいており、プロジェクト ファイルは Project ディレクトリに配置されています。

Project\Images\BestJpgs

Project\Images\ImgJpgs

Project\Images\ImgJpgs\Img1

Images ディレクトリとサブディレクトリ内のすべての .jpg ファイルを含めるには

  • 次の Include 属性を使用します。

    Include="Images\**\*.jpg"

img で始まるすべての .jpg ファイルを含めるには

  • 次の Include 属性を使用します。

    Include="Images\**\img*.jpg"

ディレクトリ内の jpg で終わる名前を持つすべてのファイルを含めるには

  • 次のいずれかの Include 属性を使用します。

    Include="Images\**\*jpgs\*.*"

    or

    Include="Images\**\*jpgs\*"

項目をタスクに渡す

プロジェクト ファイルでは、タスクで @() の表記を使用して、項目リスト全体をビルドの入力として指定できます。 この表記を使用して、すべてのファイルを個別にリストすることも、ワイルドカードを使用することもできます。

すべての Visual C# ファイルまたは Visual Basic ファイルを入力として使用するには

  • 次のような Include 属性を使用します。

    <CSC Sources="@(CSFile)">...</CSC>

    or

    <VBC Sources="@(VBFile)">...</VBC>

Note

ワイルドカードと項目を使用して、ビルドの入力を指定する必要があります。MSBuild タスクの Sources 属性 (CscVbc など) を使用して入力を指定することはできません。 次の例はプロジェクト ファイルでは無効です。

<CSC Sources="*.cs">...</CSC>

例 1

次のコード例では、すべての入力ファイルを個別に含むプロジェクトを示します。

<Project DefaultTargets="Compile"
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
    <PropertyGroup>
        <Builtdir>built</Builtdir>
    </PropertyGroup>

    <ItemGroup>
        <CSFile Include="Form1.cs"/>
        <CSFile Include="AssemblyInfo.cs"/>

        <Reference Include="System.dll"/>
        <Reference Include="System.Data.dll"/>
        <Reference Include="System.Drawing.dll"/>
        <Reference Include="System.Windows.Forms.dll"/>
        <Reference Include="System.XML.dll"/>
    </ItemGroup>

    <Target Name="PreBuild">
        <Exec Command="if not exist $(builtdir) md $(builtdir)"/>
    </Target>

    <Target Name="Compile" DependsOnTargets="PreBuild">
        <Csc Sources="@(CSFile)"
            References="@(Reference)"
            OutputAssembly="$(builtdir)\$(MSBuildProjectName).exe"
            TargetType="exe" />
    </Target>
</Project>

例 2

次のコード例では、ワイルドカードを使用してすべての .cs ファイルを含めます。

<Project DefaultTargets="Compile"
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >

    <PropertyGroup>
        <builtdir>built</builtdir>
    </PropertyGroup>

    <ItemGroup>
        <CSFile Include="*.cs"/>

        <Reference Include="System.dll"/>
        <Reference Include="System.Data.dll"/>
        <Reference Include="System.Drawing.dll"/>
        <Reference Include="System.Windows.Forms.dll"/>
        <Reference Include="System.XML.dll"/>
    </ItemGroup>

    <Target Name="PreBuild">
        <Exec Command="if not exist $(builtdir) md $(builtdir)"/>
    </Target>

    <Target Name="Compile" DependsOnTargets="PreBuild">
        <Csc Sources="@(CSFile)"
            References="@(Reference)"
            OutputAssembly="$(builtdir)\$(MSBuildProjectName).exe"
            TargetType="exe" />
    </Target>
</Project>