Exclure des fichiers de la build

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

Exclure un fichier ou un répertoire des entrées d’une build

Les listes 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 build, il se peut que vous ne vouliez pas inclure un ou plusieurs fichiers du répertoire ou un répertoire de l’ensemble imbriqué des répertoires. Pour exclure un élément de la liste 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"/>
    

    Notes

    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 les emplacements des fichiers dans l’attribut Include, vous devez également 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 également utiliser un chemin d’accès relatif dans l’attribut Exclude.

Utiliser des conditions pour exclure un fichier ou un répertoire des entrées d’une build

Si vous souhaitez inclure des éléments, par exemple, dans une version Debug, mais pas dans une version Release, vous pouvez utiliser l’attribut Condition pour spécifier les conditions dans lesquelles inclure l’élément.

Pour inclure le fichier Formula.vb uniquement dans les versions Release

  • Utilisez un attribut Condition semblable à ce qui suit :

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

Exemple

L’exemple de code suivant génère un projet avec l’ensemble des fichiers .cs du répertoire à l’exception du fichier Form2.cs.

<Project DefaultTargets="Compile"
    xmlns="http://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>