Copy – úloha

Zkopíruje soubory do nového umístění v systému souborů.

Parametry

Následující tabulka popisuje parametry Copy úlohy.

Parametr Popis
CopiedFiles Volitelný ITaskItem[] výstupní parametr.

Obsahuje položky, které byly úspěšně zkopírovány, včetně těch, které nebyly skutečně zkopírovány, ale byly přeskočeny, protože byly již aktuální a SkipUnchangedFiles byly true.
DestinationFiles Volitelný ITaskItem[] parametr.

Určuje seznam souborů, do kterého se mají kopírovat zdrojové soubory. Tento seznam by měl být se seznamem uvedeným v parametru SourceFiles v relaci 1 : 1. To znamená, že první soubor zadaný v části SourceFiles bude zkopírován na první místo zadané v části DestinationFiles a tak dále.
DestinationFolder Volitelný ITaskItem parametr.

Určuje adresář, do kterého se mají soubory kopírovat. Musí se jednat o adresář, nikoli o soubor. Pokud adresář neexistuje, je automaticky vytvořen.
OverwriteReadOnlyFiles Volitelný Boolean parametr.

Přepsat soubory i v případě, že jsou označeny jako soubory určené pouze pro čtení
Retries Volitelný Int32 parametr.

Určuje počet pokusů o kopírování, pokud se všechny předchozí pokusy nezdařily. Výchozím nastavením je nula.

Upozornění: Použití opakování může v procesu sestavení maskovat problém se synchronizací.

Poznámka: I když je výchozí hodnota úkolu nulová, často se $(CopyRetryCount) používá úloha, která je ve výchozím nastavení nenulová.
RetryDelayMilliseconds Volitelný Int32 parametr.

Určuje zpoždění mezi nezbytnými pokusy o opakování. Výchozí hodnotou je argument RetryDelayMillisecondsDefault, který je předán konstruktoru CopyTask.
SkipUnchangedFiles Volitelný Boolean parametr.

Ve výchozím nastavení . false Pokud je nastavená hodnota true, přeskočí kopírování souborů, které se mezi zdrojem a cílem nezměnily. Úloha Copy považuje soubory za nezměněné, pokud mají stejnou velikost a je uveden stejný čas poslední aktualizace.

Poznámka: Pokud tento parametr nastavíte na truehodnotu , neměli byste použít analýzu závislostí u cíle obsahujícího objektu, protože tato úloha se spustí pouze v případě, že časy poslední změny zdrojových souborů jsou novější než časy poslední změny cílových souborů.
SourceFiles Požadovaný parametr ITaskItem[].

Určuje soubory ke kopírování.
UseHardlinksIfPossible Volitelný Boolean parametr.

Pokud truemísto kopírování souborů vytvoří pevné odkazy pro zkopírované soubory.
UseSymbolicLinksIfPossible Volitelný Boolean parametr.

Pokud true, vytvoří symbolické odkazy pro zkopírované soubory místo kopírování souborů, pokud je to možné.

Upozornění

Zaprotokolují se upozornění, včetně:

  • Copy.DestinationIsDirectory

  • Copy.SourceIsDirectory

  • Copy.SourceFileNotFound

  • Copy.CreatesDirectory

  • Copy.HardLinkComment

  • Copy.RetryingAsFileCopy

  • Copy.FileComment

  • Copy.RemovingReadOnlyAttribute

Poznámky

Je nutné zadat buď parametr DestinationFolder, nebo DestinationFiles, nikoli však oba. Jsou-li zadány oba parametry, úloha se nezdaří a je zaznamenána chyba.

Kromě výše uvedených parametrů tato úloha dědí parametry z TaskExtension třídy, která sama dědí z Task třídy. Seznam těchto dalších parametrů a jejich popisů naleznete v tématu TaskExtension základní třída.

Příklad 1

Následující příklad zkopíruje položky v MySourceFiles kolekci položek do složky c:\MyProject\Destination.

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

Příklad 2

Následující příklad znázorňuje postup rekurzivního kopírování. Tento projekt zkopíruje všechny soubory rekurzivně z c:\MySourceTree do c:\MyDestinationTree při zachování adresářové struktury.

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

Viz také