共用方式為


Delete 工作

刪除指定的檔案。

參數

下表說明 Delete 工作的參數。

參數 描述
DeletedFiles 選擇性的 ITaskItem[] 輸出參數。

指定已成功刪除的檔案。
Files 必要的 ITaskItem[] 參數。

指定要刪除的檔案。
TreatErrorsAsWarnings 選擇性的 Boolean 參數

如果是 true,即會將錯誤記錄為警告。 預設值是 false

備註

除了上述所列的參數,此項工作還會繼承 TaskExtension 類別中的參數,而該類別本身又繼承 Task 類別。 如需這些其他參數的清單及其描述,請參閱 TaskExtension 基底類別

警告

當您搭配 Delete 工作使用萬用字元時請格外小心。 您可以使用 $(SomeProperty)\**\*.*$(SomeProperty)/**/*.* 之類的運算式輕鬆刪除錯誤的檔案,特別是當屬性評估為空字串時,在此情況下,Files 參數可以評估為磁碟機的根目錄,並刪除更多項目 (比您想要刪除的更多)。

範例

下列範例會在建置 DeleteDebugSymbolFile 目標時刪除 ConsoleApp1.pdb 檔案。

<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>

如果您需要追蹤已刪除的檔案,請使用項目名稱將 TaskParameter 設定為 DeletedFiles,如下所示:

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

請不要直接在 Delete 工作中使用萬用字元,而是建立待刪除檔案的 ItemGroup,並對其執行 Delete 工作。 但是,請務必小心放置 ItemGroup。 如果您將 ItemGroup 放在專案檔的最上層,則會在建置開始之前提早進行評估,造成其不會包含在建置過程中建置的任何檔案。 因此,請將建立待刪除項目清單的 ItemGroup 放在靠近 Delete 工作的目標中。 您也可以指定條件來確認屬性不是空白,讓您不會建立其路徑以磁碟機根目錄開頭的項目清單。

下列範例會刪除特定資料夾中副檔名為 .orig 的所有檔案。

<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>

注意

使用萬用字元刪除建置流程期間產生的檔案時,請注意建置流程中發生萬用字元展開的時間。 在上一個範例中,具有萬用字元展開的 ItemGroup 所在目標與刪除相同,這可確保在該目標之前建置的任何檔案都包含在刪除清單中。 最上層的項目群組會在評估階段展開,這會遺漏建置流程稍後產生的任何檔案。

Delete 工作的用途是刪除檔案。 如果您想要刪除目錄,請使用 RemoveDir

Delete 工作不提供刪除唯讀檔案的選項。 若要刪除唯讀檔案,您可以使用 Exec 工作來執行 del 命令或對等命令,並搭配適當的選項來允許刪除唯讀檔案。 您必須注意輸入項目清單的長度,因為命令列有長度限制,也請務必處理具有空格的檔案名稱,如下列範例所示:

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

一般而言,撰寫建置指令碼時,請考慮您的刪除在邏輯上是否屬於 Clean 作業的一部分。 如果您需要在標準 Clean 作業中設定要清除某些檔案,您可以將檔案新增至 @(FileWrites) 清單,這些檔案會在下一個 Clean 中刪除。 如果需要更多自訂處理,請定義目標,並藉由設定 BeforeTargets="Clean"AfterTargets="Clean" 屬性來指定執行方式,或是定義 BeforeCleanAfterClean 目標的自訂版本。 請參閱自訂您的組建

另請參閱