Partager via


Comment : générer tous les fichiers dans un répertoire sauf un

Mise à jour : novembre 2007

Dans un fichier projet, vous pouvez utiliser des caractères génériques pour inclure tous les fichiers d'un même répertoire ou un ensemble imbriqué de répertoires comme entrées d'une génération. Toutefois, il se peut qu'il y ait un fichier du répertoire ou un répertoire de l'ensemble imbriqué de répertoires que vous ne souhaitiez pas inclure comme entrée d'une génération. Vous pouvez exclure explicitement ce fichier ou ce répertoire de la liste des entrées. Il se peut aussi qu'il y ait un fichier dans un projet que vous ne souhaitez inclure qu'à certaines conditions. Vous pouvez déclarer explicitement les conditions selon lesquelles un fichier est inclus dans une génération.

Exclusion d'un fichier ou d'un répertoire des entrées d'une génération

Les collections d'éléments constituent les fichiers d'entrée d'une génération. Les éléments que vous souhaitez inclure sont déclarés séparément ou en tant que groupe à l'aide de l'attribut Include. Par exemple :

<CSFile Include="Form1.cs"/>
<CSFile Include ="File1.cs;File2.cs"/>
<CSFile Include="*.cs"/>
<JPGFile Include="Images\**\*.jpg"/>

Si vous avez utilisé des caractères génériques pour inclure tous les fichiers d'un répertoire ou un ensemble imbriqué de répertoires comme entrées d'une génération, il se peut qu'il y ait un ou plusieurs fichiers du répertoire ou un répertoire de l'ensemble imbriqué des répertoires que vous ne souhaitiez pas inclure. Pour exclure un élément de la collection d'éléments, utilisez l'attribut Exclude.

Pour inclure tous les fichiers .cs ou .vb à l'exception de Form2

  • Utilisez l'un des attributs Include et Exclude suivants :

    <CSFile Include="*.cs" Exclude="Form2.cs"/>
    

    - ou -

    <VBFile Include="*.vb" Exclude="Form2.vb"/>
    

Pour inclure tous les fichiers .cs ou .vb à l'exception de Form2 et Form3

  • Utilisez l'un des attributs Include et Exclude suivants :

    <CSFile Include="*.cs" Exclude="Form2.cs;Form3.cs"/>
    

    - ou -

    <VBFile Include="*.vb" Exclude="Form2.vb;Form3.vb"/>
    

Pour inclure tous les fichiers .jpg des sous-répertoires du répertoire Images, à l'exception de ceux du répertoire Version2

  • Utilisez les attributs Include et Exclude suivants :

    <JPGFile 
        Include="Images\**\*.jpg" 
        Exclude = "Images\**\Version2\*.jpg"/>
    
    Remarque :

    Vous devez spécifier le chemin d'accès pour les deux attributs. Si vous utilisez un chemin d'accès absolu pour spécifier des emplacements de fichiers dans l'attribut Include, vous devez utiliser un chemin d'accès absolu dans l'attribut Exclude ; si vous utilisez un chemin d'accès relatif dans l'attribut Include, vous devez utiliser un chemin d'accès relatif dans l'attribut Exclude.

Utilisation de conditions pour exclure un fichier ou un répertoire des entrées d'une génération

S'il y a des éléments que vous souhaitez inclure, par exemple, dans une génération Debug mais pas dans une génération Release, vous pouvez utiliser l'attribut Condition pour spécifier les conditions selon lesquelles l'élément doit être inclus.

Pour inclure le fichier Formula.vb uniquement dans les générations Release

  • Utilisez un attribut Condition similaire au code suivant :

    <Compile 
        Include="Formula.vb" 
        Condition=" '$(Configuration)' == 'Release' " />
    

Exemple

L'exemple de code suivant génère un projet avec tous les fichiers .cs du répertoire à l'exception de Form2.cs.

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

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

    <ItemGroup>
        <CSFile Include="*.cs Exclude="Form2.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>

Voir aussi

Tâches

Comment : utiliser des caractères génériques pour générer tous les fichiers dans un répertoire

Concepts

Éléments MSBuild

MSBuild