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 true hodnotu , 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 true mí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>