Silme görevi

Belirtilen dosyaları siler.

Parametreler

Aşağıdaki tabloda görevin parametreleri Delete açıklanmaktadır.

Parametre Tanım
DeletedFiles İsteğe bağlı ITaskItem[] çıkış parametresi.

Başarıyla silinen dosyaları belirtir.
Files Gerekli ITaskItem[] parametresi.

Silinecek dosyaları belirtir.
TreatErrorsAsWarnings İsteğe bağlı Boolean parametre

ise true, hatalar uyarı olarak günlüğe kaydedilir. false varsayılan değerdir.

Açıklamalar

Yukarıda listelenen parametrelere ek olarak, bu görev kendi sınıfından TaskExtension devralan sınıfından Task parametreleri devralır. Bu ek parametrelerin ve açıklamalarının listesi için bkz . TaskExtension temel sınıfı.

Uyarı

Görevle Delete joker karakter kullanırken dikkatli olun. veya $(SomeProperty)/**/*.*gibi $(SomeProperty)\**\*.* ifadelerle yanlış dosyaları kolayca silebilirsiniz. Özellikle özellik boş bir dize olarak değerlendirilirse, bu durumda Files parametre sürücünüzün köküne göre değerlendirebilir ve silmek istediğinizden çok daha fazlasını silebilir.

Örnekler

Aşağıdaki örnek, hedefi oluşturduğunuzda DeleteDebugSymbolFile ConsoleApp1.pdb dosyasını siler.

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

Silinen dosyaları izlemeniz gerekiyorsa, öğe adıyla aşağıdaki gibi olarak ayarlayın TaskParameterDeletedFiles :

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

Doğrudan görevde joker karakterler Delete kullanmak yerine, görevi silmek ve bu görev üzerinde çalıştırmak Delete için bir ItemGroup dosya oluşturun. Ama dikkatli bir şekilde yerleştirmeyi ItemGroup unutmayın. Bir proje dosyasında en üst düzeye bir eklerseniz ItemGroup , derleme başlamadan önce erken değerlendirilir, bu nedenle derleme işleminin bir parçası olarak oluşturulmuş dosyaları içermez. Bu nedenle, silinecek öğelerin listesini oluşturan öğesini göreve yakın Delete bir hedefe yerleştirinItemGroup. Ayrıca, özelliğin boş olmadığını denetlemek için bir koşul belirtebilirsiniz, böylece sürücünün kökünde başlayan bir yol içeren bir öğe listesi oluşturmayacaksınız.

Aşağıdaki örnekte, belirli bir klasördeki uzantıya .orig sahip tüm dosyalar silinir.

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

Dekont

Derleme işlemi sırasında oluşturulan dosyaların silinmesi için joker karakterler kullanılırken, derleme işleminde joker karakter genişletmenin ne zaman gerçekleştiğine dikkat edin. Önceki örnekte joker ItemGroup karakterli genişletme, silme işlemiyle aynı hedeftedir ve bu da bu hedef öncesinde oluşturulan tüm dosyanın silme listesine eklenmesini sağlar. En üst düzeydeki öğe grupları değerlendirme zamanında genişletilir ve bu da derleme işleminde daha sonra oluşturulan tüm dosyaları kaçıracak şekilde genişletilir.

Görev Delete , dosyaları silmeye yöneliktir. Bir dizini silmek istiyorsanız RemoveDir kullanın.

Görev Delete salt okunur dosyaları silme seçeneği sağlamaz. Salt okunur dosyaları silmek için, komutu veya eşdeğerini del çalıştırmak için, salt okunur dosyaları silmeyi etkinleştirmek için uygun seçenekle görevi kullanabilirsinizExec. Komut satırında uzunluk sınırlaması bulunduğundan ve bu örnekte olduğu gibi dosya adlarını boşluklarla işlediğinden emin olduğunuzdan, giriş öğesi listesinin uzunluğuna dikkat edin:

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

Genel olarak, derleme betikleri yazarken silme işleminin mantıksal olarak bir işlemin parçası Clean olup olmadığını göz önünde bulundurun. Normal Clean bir işlemin parçası olarak temizlenecek bazı dosyaları ayarlamanız gerekiyorsa, bunları @(FileWrites) listeye ekleyebilirsiniz ve bunlar sonraki Cleanüzerinde silinir. Daha fazla özel işleme gerekiyorsa, veya özniteliğini BeforeTargets="Clean" ayarlayarak bir hedef tanımlayın ve çalıştırılmasını belirtin ya da ya da AfterTargets="Clean"ya da AfterClean hedeflerinizin özel sürümünü BeforeClean tanımlayın. Bkz. Derlemenizi özelleştirme.

Ayrıca bkz.