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 SkipUnchangedFilestrueve 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 trueayarlarsanı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>

Ayrıca bkz.