Share via


Pulire una compilazione

Quando si esegue la pulitura di una compilazione, vengono eliminati tutti i file intermedi e di output, lasciando solo i file di progetto e di componente. È quindi possibile compilare nuove istanze di file intermedi e di output dai file di progetto e di componente.

Creare una directory per gli elementi di output

Per impostazione predefinita, il file con estensione exe creato quando si compila un progetto viene inserito nella stessa directory dei file di progetto e di origine. Gli elementi di output invece vengono in genere creati in una directory distinta.

Per creare una directory per gli elementi di output

  1. Usare l'elemento Property per definire il percorso e il nome della directory. Ad esempio, creare una directory denominata BuiltApp nella directory che contiene i file di progetto e di origine:

    <builtdir>BuiltApp</builtdir>

  2. Usare l'attività MakeDir per creare la directory se la directory non esiste. Ad esempio:

    <MakeDir Directories = "$(builtdir)"
     Condition = "!Exists('$(builtdir)')" />
    

Rimuovere gli elementi di output

Prima di creare nuove istanze dei file intermedi e di output, è possibile cancellare tutte le istanze precedenti dei file intermedi e di output. Usare l'attività RemoveDir per eliminare una directory e tutti i file e le directory in essa contenuti da un disco.

Per rimuovere una directory e tutti i file contenuti nella directory

  • Usare l'attività RemoveDir per rimuovere la directory. Ad esempio:

    <RemoveDir Directories="$(builtdir)" />

Esempio

Il progetto di esempio di codice seguente contiene una nuova destinazione, Clean, che usa l'attività RemoveDir per eliminare una directory e tutti i file e le directory in essa contenute. Anche in questo esempio, la destinazione Compile crea una directory distinta per gli elementi di output che vengono eliminati durante la pulizia della compilazione.

Compile è definito come destinazione predefinita che viene usata automaticamente se non vengono specificate una o più destinazioni diverse. Usare l'opzione della riga di comando -target per specificare una destinazione diversa. Ad esempio:

msbuild <file name>.proj -target:Clean

L'opzione -target può essere abbreviata in -t e può specificare più di una destinazione. Ad esempio, per usare la destinazione Clean e quindi la destinazione Compile, digitare:

msbuild <file name>.proj -t:Clean;Compile

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

    <PropertyGroup>
        <!-- Set the application name as a property -->
        <name>HelloWorldCS</name>

        <!-- Set the output folder as a property -->
        <builtdir>BuiltApp</builtdir>
    </PropertyGroup>

    <ItemGroup>
        <!-- Specify the inputs by type and file name -->
        <CSFile Include = "consolehwcs1.cs"/>
    </ItemGroup>

    <Target Name = "Compile">
        <!-- Check whether an output folder exists and create
        one if necessary -->
        <MakeDir Directories = "$(builtdir)"
            Condition = "!Exists('$(builtdir)')" />

        <!-- Run the Visual C# compiler -->
        <CSC Sources = "@(CSFile)"
            OutputAssembly = "$(BuiltDir)\$(appname).exe">
            <Output TaskParameter = "OutputAssembly"
                ItemName = "EXEFile" />
        </CSC>

        <!-- Log the file name of the output file -->
        <Message Text="The output file is @(EXEFile)"/>
    </Target>

    <Target Name = "Clean">
        <RemoveDir Directories="$(builtdir)" />
    </Target>
</Project>