Delete – úloha
Odstraní zadané soubory.
Parametry
Následující tabulka popisuje parametry Delete
úlohy.
Parametr | Popis |
---|---|
DeletedFiles |
Volitelný ITaskItem[] výstupní parametr.Určuje soubory, které byly úspěšně odstraněny. |
Files |
Požadovaný parametr ITaskItem[] .Určuje soubory, které se mají odstranit. |
TreatErrorsAsWarnings |
Volitelný Boolean parametrPokud true se chyby zaprotokolují jako upozornění. Výchozí hodnota je false . |
Poznámky
Kromě výše uvedených parametrů tato úloha dědí parametry z TaskExtension třídy, která sama dědí z Task třídy. Seznam těchto dalších parametrů a jejich popisů naleznete v tématu TaskExtension základní třída.
Upozorňující
Při použití zástupných znaků s Delete
úkolem buďte opatrní. Nesprávné soubory můžete snadno odstranit pomocí výrazů jako $(SomeProperty)\**\*.*
nebo $(SomeProperty)/**/*.*
, zejména pokud se vlastnost vyhodnotí jako prázdný řetězec, v takovém případě Files
může parametr vyhodnotit kořen jednotky a odstranit mnohem více, než jste chtěli odstranit.
Příklady
Následující příklad odstraní soubor ConsoleApp1.pdb při sestavení DeleteDebugSymbolFile
cíle.
<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>
Pokud potřebujete sledovat odstraněné soubory, nastavte TaskParameter
název DeletedFiles
položky následujícím způsobem:
<Target Name="DeleteDebugSymbolFile">
<Delete Files="$(OutDir)$(AppName).pdb" >
<Output TaskParameter="DeletedFiles" ItemName="DeletedList"/>
</Delete>
<Message Text="Deleted files: '@(DeletedList)'"/>
</Target>
Místo přímého použití zástupných znaků v Delete
úloze vytvořte ItemGroup
soubor, který se má odstranit a spustit na Delete
této úloze. Ale nezapomeňte pečlivě umístit ItemGroup
. Pokud vložíte soubor ItemGroup
projektu na nejvyšší úroveň, vyhodnotí se dříve, než se sestavení spustí, takže nebude obsahovat žádné soubory, které byly vytvořeny jako součást procesu sestavení. Vložte tedy ItemGroup
seznam položek, které se mají odstranit v cíli blízko Delete
úkolu. Můžete také zadat podmínku, která zkontroluje, že tato vlastnost není prázdná, takže nebudete vytvářet seznam položek s cestou, která začíná v kořenovém adresáři jednotky.
Následující příklad odstraní všechny soubory s příponou .orig
v konkrétní složce.
<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>
Poznámka
Při použití zástupných znaků pro odstranění souborů vygenerovaných během procesu sestavení mějte na paměti, kdy v procesu sestavení dojde k rozšíření zástupných znaků. V předchozím příkladu je rozšíření se zástupným znakem ve stejném cíli jako odstranění, což zajistí, ItemGroup
že všechny soubory vytvořené před tímto cílem budou zahrnuty do seznamu odstranění. Skupiny položek na nejvyšší úrovni se v době vyhodnocení rozbalí, což by vynechalo všechny soubory vygenerované později v procesu sestavení.
Úloha Delete
je určena k odstranění souborů. Pokud chcete odstranit adresář, použijte RemoveDir.
Úloha Delete
neposkytuje možnost odstranit soubory jen pro čtení. Pokud chcete odstranit soubory jen pro čtení, můžete použít Exec
úlohu ke spuštění příkazu nebo ekvivalentu del
s příslušnou možností pro povolení odstraňování souborů jen pro čtení. Musíte věnovat pozornost délce vstupního seznamu položek, protože na příkazovém řádku platí omezení délky, stejně jako při zpracování názvů souborů s mezerami, jak je znázorněno v tomto příkladu:
<Target Name="DeleteReadOnly">
<ItemGroup>
<FileToDelete Include="read only file.txt"/>
</ItemGroup>
<Exec Command="del /F /Q "@(FileToDelete)""/>
</Target>
Obecně platí, že při psaní skriptů sestavení zvažte, jestli je odstranění logicky součástí Clean
operace. Pokud potřebujete nastavit, aby se některé soubory vyčistily jako součást normální Clean
operace, můžete je přidat do @(FileWrites)
seznamu a v dalším Clean
kroku se odstraní . Pokud potřebujete další vlastní zpracování, definujte cíl a určete, že se má spustit nastavením atributu BeforeTargets="Clean"
nebo AfterTargets="Clean"
nebo definováním vlastní verze BeforeClean
nebo AfterClean
cílů. Viz Přizpůsobení sestavení.