Condividi tramite


Procedura: selezionare i file da compilare

Quando si compila un progetto che contiene numerosi file, è possibile elencarli separatamente nel file di progetto oppure utilizzare caratteri jolly per includerli tutti in una directory o in un insieme annidato di directory.

Definizione degli input

Gli elementi rappresentano gli input per una compilazione.Per ulteriori informazioni sugli elementi, vedere Elementi MSBuild.

Per includere i file per una compilazione, è necessario inserirli in un elenco di elementi nel file di progetto di MSBuild.È possibile aggiungere più file agli elenchi di elementi includendoli singolarmente oppure in blocco utilizzando i caratteri jolly.

Per dichiarare gli elementi individualmente

  • Utilizzare attributi Include simili a quelli riportati di seguito:

    <CSFile Include="form1.cs"/>

    - oppure -

    <VBFile Include="form1.vb"/>

    [!NOTA]

    Se gli elementi in 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

  • Utilizzare attributi Include simili a quelli riportati di seguito:

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

    - oppure -

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

Specifica degli input tramite caratteri jolly

I caratteri jolly possono inoltre essere utilizzati per includere in modo ricorsivo come input per una compilazione tutti i file, o solo alcuni di essi, presenti nelle sottodirectory.Per ulteriori informazioni sui caratteri jolly, vedere Elementi MSBuild.

Negli esempi riportati di seguito è illustrato un progetto che contiene file grafici nelle directory e sottodirectory indicate, con il file di progetto situato nella directory Project:

Project\Images\BestJpgs

Project\Images\ImgJpgs

Project\Images\ImgJpgs\Img1

Per includere tutti i file con estensione jpg presenti nella directory Images e nelle relative sottodirectory

  • Utilizzare il seguente attributo Include:

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

Per includere tutti i file con estensione jpg il cui nome inizia con "img"

  • Utilizzare il seguente attributo Include:

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

Per includere tutti i file presenti nelle directory il cui nome termina in "jpgs"

  • Utilizzare uno degli attributi Include seguenti:

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

    - oppure -

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

Passaggio degli elementi a un'attività

In un file di progetto è possibile inserire la notazione @() nelle attività per specificare come input per una compilazione un intero elenco di elementi.Tale notazione può essere utilizzata sia che i file vengano elencati separatamente, sia che si utilizzino i caratteri jolly.

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

  • Utilizzare attributi Include simili a quelli riportati di seguito:

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

    - oppure -

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

[!NOTA]

Per specificare gli input per una compilazione, è necessario utilizzare caratteri jolly con gli elementi. Non è consentito ricorrere all'attributo Sources in attività di MSBuild quali Csc o Vbc.L'esempio riportato di seguito non è considerato valido in un file di progetto:

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

Esempio

Nell'esempio di codice riportato di seguito viene illustrato un progetto in cui tutti i file di input vengono inclusi separatamente.

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

Nell'esempio di codice riportato di seguito viene utilizzato un carattere jolly per includere tutti i file con estensione cs.

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

Vedere anche

Attività

Procedura: escludere file dalla compilazione

Concetti

Elementi MSBuild