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 facoltativoSe 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 "@(FileToDelete)""/>
</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.