Condividi tramite


Delete (attività)

Elimina i file specificati.

Parametri

Nella tabella che segue vengono descritti i parametri dell'attività Delete.

Parametro Descrizione
DeletedFiles Parametro di output ITaskItem[] facoltativo.

Specifica i file che sono stati eliminati correttamente.
Files Parametro ITaskItem[] obbligatorio.

Specifica i file da eliminare.
TreatErrorsAsWarnings Parametro Boolean facoltativo

Se true, gli errori vengono registrati come avvisi. Il valore predefinito è false.

Osservazioni:

Oltre ai parametri elencati sopra, questa attività eredita i parametri dalla classe TaskExtension, che a sua volta eredita dalla classe Task. Per un elenco di questi parametri aggiuntivi e le rispettive descrizioni, vedere TaskExtension Base Class.

Avviso

Prestare attenzione quando si usano caratteri jolly con l'attività Delete . È possibile eliminare facilmente i file errati con espressioni come $(SomeProperty)\**\*.* o $(SomeProperty)/**/*.*, soprattutto se la proprietà restituisce una stringa vuota, nel qual caso il Files parametro può restituire la radice dell'unità ed eliminare molto di più di quanto si desidera eliminare.

Esempi

Nell'esempio seguente viene eliminato il file ConsoleApp1.pdb quando si compila la DeleteDebugSymbolFile destinazione.

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

    <PropertyGroup>
        <AppName>ConsoleApp1</AppName>
    </PropertyGroup>

    <Target Name="DeleteDebugSymbolFile">
        <Message Text="Deleting $(OutDir)$(AppName).pdb"/>
        <Delete Files="$(OutDir)$(AppName).pdb" />
    </Target>
  
</Project>

Se è necessario tenere traccia dei file eliminati, impostare su TaskParameter DeletedFiles con il nome dell'elemento, come indicato di seguito:

      <Target Name="DeleteDebugSymbolFile">
        <Delete Files="$(OutDir)$(AppName).pdb" >
              <Output TaskParameter="DeletedFiles" ItemName="DeletedList"/>
        </Delete>
        <Message Text="Deleted files: '@(DeletedList)'"/>
    </Target>

Invece di usare direttamente i caratteri jolly nell'attività Delete , creare un ItemGroup di file per eliminare ed eseguire l'attività Delete in tale attività. Ma, assicurati di posizionare attentamente ItemGroup . Se si inserisce un oggetto ItemGroup al livello superiore in un file di progetto, viene valutato in anticipo, prima dell'avvio della compilazione, quindi non includerà i file compilati come parte del processo di compilazione. Inserire quindi l'oggetto ItemGroup che crea l'elenco di elementi da eliminare in una destinazione vicina all'attività Delete . È anche possibile specificare una condizione per verificare che la proprietà non sia vuota, in modo da non creare un elenco di elementi con un percorso che inizia nella radice dell'unità.

Nell'esempio seguente vengono eliminati tutti i file con estensione .orig in una determinata cartella.

<Project>
  <Target Name="DeleteFiles" AfterTargets="Build">
     <ItemGroup>
       <FilesToDelete Include="source\*.orig"/>
     </ItemGroup>
     <Message Text="Deleting Files @(FilesToDelete)"/>
     <Delete Files="@(FilesToDelete)">
       <Output 
          TaskParameter="DeletedFiles"
          ItemName="FilesDeleted"/>
     </Delete>
     <Message Text="Files deleted: @(FilesDeleted)"/>
  </Target>
</Project>

Nota

Quando si usano caratteri jolly per l'eliminazione di file generati durante il processo di compilazione, tenere presente quando si verifica l'espansione con caratteri jolly nel processo di compilazione. Nell'esempio precedente, con ItemGroup l'espansione con caratteri jolly si trova nella stessa destinazione dell'eliminazione, che garantisce che qualsiasi file compilato prima di tale destinazione sia incluso nell'elenco di eliminazione. I gruppi di elementi al livello superiore vengono espansi in fase di valutazione, che mancherebbero tutti i file generati più avanti nel processo di compilazione.

L'attività è destinata all'eliminazione Delete di file. Per eliminare una directory, usare RemoveDir.

L'attività Delete non offre un'opzione per eliminare i file di sola lettura. Per eliminare file di sola lettura, è possibile usare l'attività Exec per eseguire il del comando o l'equivalente, con l'opzione appropriata per abilitare l'eliminazione di file di sola lettura. È necessario prestare attenzione alla lunghezza dell'elenco di elementi di input, poiché esiste una limitazione di lunghezza nella riga di comando, oltre a assicurarsi di gestire i nomi file con spazi, come in questo esempio:

<Target Name="DeleteReadOnly">
  <ItemGroup>
    <FileToDelete Include="read only file.txt"/>
  </ItemGroup>
  <Exec Command="del /F /Q &quot;@(FileToDelete)&quot;"/>
</Target>

In generale, quando si scrivono script di compilazione, valutare se l'eliminazione fa parte logicamente di un'operazione Clean . Se è necessario impostare alcuni file da pulire come parte di un Clean normale funzionamento, è possibile aggiungerli all'elenco @(FileWrites) e verranno eliminati nel successivo Clean. Se è necessaria un'elaborazione più personalizzata, definire una destinazione e specificarla impostando l'attributo BeforeTargets="Clean" o AfterTargets="Clean"oppure definire la versione personalizzata delle BeforeClean destinazioni o AfterClean . Vedere Personalizzare la compilazione.

Vedi anche