Sélectionner des fichiers dans une build

Quand vous générez un projet contenant plusieurs fichiers, vous pouvez lister chaque fichier un à un dans le fichier projet ou utiliser des caractères génériques pour inclure tous les fichiers d’un répertoire ou d’un ensemble imbriqué de répertoires.

Spécifier les entrées

Les éléments représentent les entrées d’une build. Pour plus d’informations sur les éléments, consultez Éléments.

Pour inclure des fichiers d’une build, vous devez les ajouter à une liste d’éléments dans le fichier projet MSBuild. Plusieurs fichiers peuvent être ajoutés aux listes d’éléments : soit un à un, soit à l’aide de caractères génériques.

Pour déclarer des éléments un à un

  • Utilisez les attributs Include de la façon suivante :

    <CSFile Include="form1.cs"/>

    ou

    <VBFile Include="form1.vb"/>

    Notes

    Si les éléments d’une collection d’éléments ne sont pas dans le même répertoire que le fichier projet, vous devez spécifier le chemin complet ou relatif de l’élément. Par exemple : Include="..\..\form2.cs".

Pour déclarer plusieurs éléments

  • Utilisez les attributs Include de la façon suivante :

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

    ou

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

Spécifier les entrées avec des caractères génériques

Vous pouvez aussi utiliser des caractères génériques pour inclure tous les fichiers de manière récursive ou n’inclure que certains fichiers des sous-répertoires comme entrées d’une build. Pour plus d’informations sur les caractères génériques, consultez Éléments.

Les exemples suivants s’appuient sur un projet qui contient des fichiers graphiques dans les répertoires et sous-répertoires suivants, avec le fichier projet situé dans le répertoire Project :

Project\Images\BestJpgs

Project\Images\ImgJpgs

Project\Images\ImgJpgs\Img1

Pour inclure tous les fichiers .jpg dans le répertoire Images et ses sous-répertoires

  • Utilisez l’attribut Include suivant :

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

Pour inclure tous les fichiers .jpg commençant par img

  • Utilisez l’attribut Include suivant :

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

Pour inclure tous les fichiers figurant dans des répertoires dont les noms se terminent par jpgs

  • Utilisez l’un des attributs Include suivants :

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

    ou

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

Passer des éléments à une tâche

Dans un fichier projet, vous pouvez utiliser la notation @() dans les tâches pour spécifier une liste complète d’éléments comme entrée d’une build. Vous pouvez utiliser cette notation, que vous listiez tous les fichiers un à un ou que vous utilisiez des caractères génériques.

Pour utiliser tous les fichiers Visual C# ou Visual Basic comme entrées

  • Utilisez les attributs Include de la façon suivante :

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

    ou

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

Notes

Vous devez utiliser des caractères génériques avec des éléments pour spécifier les entrées d’une build ; vous ne pouvez pas spécifier les entrées à l’aide de l’attribut Sources dans les tâches MSBuild telles que Csc ou Vbc. L’exemple suivant n’est pas valide dans un fichier projet :

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

Exemple 1

L’exemple de code suivant affiche un projet qui inclut séparément tous les fichiers d’entrée.

<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>

Exemple 2

L’exemple de code suivant utilise un caractère générique pour inclure tous les fichiers .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>