Kopyalama görevi
Dosyaları, dosya sisteminde yeni bir konuma kopyalar.
Parametreler
Aşağıdaki tabloda görevin parametreleri Copy
açıklanmaktadır.
Parametre | Açıklama |
---|---|
CopiedFiles |
İsteğe bağlı ITaskItem[] çıkış parametresi.Gerçekten kopyalanmamış, ancak zaten güncel SkipUnchangedFiles true ve olduğu için atlanmış olanlar da dahil olmak üzere başarıyla kopyalanan öğeleri içerir. |
DestinationFiles |
İsteğe bağlı ITaskItem[] parametre.Kaynak dosyaların kopyalanacağı dosyaların listesini belirtir. Bu listenin, SourceFiles parametresinde belirtilen liste ile bire bir eşlenir olması beklenir. Yani, SourceFiles içinde belirtilen ilk dosya DestinationFiles içinde belirtilen ilk konuma kopyalanır ve böyle devam eder. |
DestinationFolder |
İsteğe bağlı ITaskItem parametre. Dosyaları kopyalamak istediğiniz dizini belirtir. Bu, bir dosya değil, bir dizin olmalıdır. Eğer dizin yoksa otomatik olarak oluşturulur. |
OverwriteReadOnlyFiles |
İsteğe bağlı Boolean parametre.Salt okunur dosyalar olarak işaretlenmiş olsa bile dosyaların üzerine yaz |
Retries |
İsteğe bağlı Int32 parametre.Eğer önceki tüm denemeler başarısız olursa, kopyalamanın kaç kere deneneceğini belirtir. Varsayılan olarak sıfırdır. Dikkat: Yeniden denemelerin kullanılması, derleme işleminizdeki bir eşitleme sorununu maskeleyebilir. Not: Görev varsayılanı sıfır yeniden deneme olsa da, görevin kullanımları genellikle varsayılan olarak sıfır olmayan bir değerden geçer $(CopyRetryCount) . |
RetryDelayMilliseconds |
İsteğe bağlı Int32 parametre.Gerekli yeniden denemeler arasındaki gecikmeyi belirtir. Varsayılan olarak, CopyTask oluşturucusuna geçirilen RetryDelayMillisecondsDefault değerini kullanır. |
SkipUnchangedFiles |
İsteğe bağlı Boolean parametre.Varsayılan olarak, false . olarak ayarlanırsa true , kaynak ve hedef arasında değişmeyen dosyaların kopyalanmasını atlar. Copy görevi, dosyalar aynı boyuta ve aynı son değiştirme tarihine sahipse bu dosyaları değişmemiş kabul eder. Not: Bu parametreyi olarak true ayarlarsanız, bağımlılık analizini içeren hedefte kullanmamalısınız, çünkü bu yalnızca kaynak dosyaların son değiştirilen zamanları hedef dosyaların son değiştirilen zamanlarından daha yeniyse görevi çalıştırır. |
SourceFiles |
Gerekli ITaskItem[] parametresi.Kopyalanacak dosyaları belirtir. |
UseHardlinksIfPossible |
İsteğe bağlı Boolean parametre.ise true , kopyalanan dosyalar için dosyaları kopyalamak yerine sabit bağlantılar oluşturur. |
UseSymbolicLinksIfPossible |
İsteğe bağlı Boolean parametre.ise true , mümkünse dosyaları kopyalamak yerine kopyalanan dosyalar için sembolik bağlantılar oluşturur. |
Uyarılar
Uyarılar günlüğe kaydedilir, örneğin:
Copy.DestinationIsDirectory
Copy.SourceIsDirectory
Copy.SourceFileNotFound
Copy.CreatesDirectory
Copy.HardLinkComment
Copy.RetryingAsFileCopy
Copy.FileComment
Copy.RemovingReadOnlyAttribute
Açıklamalar
DestinationFolder
veya DestinationFiles
parametresinin belirtilmesi gerekir, ancak ikisi birden belirtilmemelidir. Eğer her ikisi de belirtilirse görev başarısız olur ve bir hata günlüğe kaydedilir.
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ı.
Örnek 1
Aşağıdaki örnek, öğe koleksiyonundaki MySourceFiles
öğeleri c:\MyProject\Destination klasörüne kopyalar.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<MySourceFiles Include="a.cs;b.cs;c.cs"/>
</ItemGroup>
<Target Name="CopyFiles">
<Copy
SourceFiles="@(MySourceFiles)"
DestinationFolder="c:\MyProject\Destination"
/>
</Target>
</Project>
Örnek 2
Aşağıdaki örnek, yinelemeli bir kopyalamanın nasıl gerçekleştirileceğini gösterir. Bu proje, dizin yapısını korurken tüm dosyaları c:\MySourceTree dosyasından c:\MyDestinationTree'ye özyinelemeli olarak kopyalar.
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="CopyFiles">
<ItemGroup>
<!-- Because this ItemGroup is inside the target, this will enumerate
all files just before calling Copy. If the ItemGroup were outside
the target , it would enumerate the files during evaluation, before
the build starts, which may miss files created during the build. -->
<MySourceFiles Include="c:\MySourceTree\**\*.*"/>
</ItemGroup>
<Copy
SourceFiles="@(MySourceFiles)"
DestinationFolder="c:\MyDestinationTree\%(RecursiveDir)"
/>
</Target>
</Project>