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 parametreise 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 TaskParameter
DeletedFiles
:
<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 "@(FileToDelete)""/>
</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.