Share via


Escludere file dalla compilazione

In un file di progetto è possibile usare caratteri jolly per includere tutti i file in una directory o in un set annidato di directory come input per una compilazione. Tuttavia, potrebbe essere presente un file nella directory o una directory in un set annidato di directory che non si vuole includere come input per una compilazione. È possibile escludere in modo esplicito tale file o directory dall'elenco di input. In un progetto potrebbe anche essere presente un file che si vuole includere solo in determinate condizioni. È possibile dichiarare in modo esplicito le condizioni in cui un file viene incluso in una compilazione.

Escludere un file o una directory dagli input per una compilazione

Gli elenchi di elementi sono i file di input per una compilazione. Gli elementi che si vuole includere vengono dichiarati separatamente o come gruppo usando l'attributo Include. Ad esempio:

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

Se si usano caratteri jolly per includere tutti i file in una directory o un set annidato di directory come input per una compilazione, potrebbero essere presenti uno o più file nella directory o in una directory nel set annidato di directory che non si desidera includere. Per escludere un elemento dall'elenco di elementi, usare l'attributo Exclude.

Per includere tutti i .cs file o *.vb ad eccezione di Form2

  • Usare uno degli attributi Include e Exclude seguenti:

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

    or

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

Per includere tutti i .cs file o .vb tranne Form2 e Form3

  • Usare uno degli attributi Include e Exclude seguenti:

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

    or

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

Per includere tutti i .jpg file nelle sottodirectory della Images directory, ad eccezione di quelli nella Version2 directory

  • Usare gli attributi Include e Exclude seguenti:

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

    Nota

    È necessario specificare il percorso per entrambi gli attributi. Se si usa un percorso assoluto per specificare i percorsi file nell'attributo Include, è necessario usare un percorso assoluto anche nell'attributo Exclude. Se si usa un percorso relativo nell'attributo Include, è necessario usare un percorso relativo anche nell'attributo Exclude.

Usare le condizioni per escludere un file o una directory dagli input per una compilazione

Se sono presenti elementi che si vuole includere, ad esempio, in una build di debug, ma non in una build di versione, è possibile usare l'attributo Condition per specificare le condizioni in cui includere l'elemento.

Per includere il file Formula.vb solo nelle build di versione

  • Usare un attributo Condition simile al seguente:

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

Esempio

L'esempio di codice seguente compila un progetto con tutti i file cs nella directory, tranne 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>