Selezionare i file da compilare

Quando si compila un progetto che contiene molti file, è possibile elencare separatamente ogni file nel file di progetto oppure è possibile usare caratteri jolly per includere tutti i file contenuti in una directory o in un set nidificato di directory.

Specificare gli input

Gli elementi rappresentano gli input di una compilazione. Per altre informazioni sugli elementi, vedere Elementi.

Per includere i file per una compilazione, devono essere inclusi in un elenco di elementi nel file di progetto MSBuild. È possibile aggiungere più file agli elenchi di elementi includendoli uno alla volta o usando i caratteri jolly per includere molti file allo stesso tempo.

Per dichiarare gli elementi uno alla volta

  • Usare gli attributi Include simili ai seguenti:

    <CSFile Include="form1.cs"/>

    oppure

    <VBFile Include="form1.vb"/>

    Nota

    Se gli elementi di una raccolta di elementi non si trovano nella stessa directory del file di progetto, è necessario specificare il percorso completo o relativo dell'elemento. Ad esempio: Include="..\..\form2.cs".

Per dichiarare più elementi

  • Usare gli attributi Include simili ai seguenti:

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

    o

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

Specificare gli input con caratteri jolly

È anche possibile usare caratteri jolly per includere in modo ricorsivo tutti i file o solo file specifici dalle sottodirectory come input per una compilazione. Per altre informazioni sui caratteri jolly, vedere Elementi

Gli esempi seguenti si basano su un progetto che contiene file grafici nelle directory e sottodirectory seguenti. Il file di progetto si trova nella directory Project:

Project\Images\BestJpgs

Project\Images\ImgJpgs

Project\Images\ImgJpgs\Img1

Per includere tutti i file con estensione jpg della directory Images e delle relative sottodirectory

  • Usare l'attributo Include seguente:

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

Per includere tutti i file jpg che iniziano con img

  • Usare l'attributo Include seguente:

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

Per includere tutti i file delle directory i cui nomi terminano con jpgs

  • Usare uno degli attributi Include seguenti:

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

    o

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

Passare elementi a un'attività

In un file di progetto, è possibile usare la notazione @() nelle attività per specificare un intero elenco di elementi come input per una compilazione. È possibile usare questa notazione se si elencano tutti i file separatamente, altrimenti usare i caratteri jolly.

Per usare tutti i file Visual C# o Visual Basic come input

  • Usare gli attributi Include simili ai seguenti:

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

    oppure

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

Nota

È necessario usare caratteri jolly con elementi per specificare gli input per una compilazione; non è possibile specificare gli input usando l'attributo Sources nelle attività di MSBuild, ad esempio Csc o Vbc. L'esempio seguente non è valido in un file di progetto:

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

Esempio 1

L'esempio di codice seguente illustra un progetto che include tutti i file di input separatamente.

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

Esempio 2

L'esempio di codice seguente usa un carattere jolly per includere tutti i file con estensione 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>