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 parametr

Pokud truese 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 &quot;@(FileToDelete)&quot;"/>
</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 Cleankroku 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í.

Viz také