Copy (tâche)
Copie les fichiers à un nouvel emplacement du système de fichiers.
Paramètres
Le tableau ci-dessous décrit les paramètres de la tâche Copy
.
Paramètre | Description |
---|---|
CopiedFiles |
Paramètre de sortie ITaskItem[] facultatif.Contient les éléments qui ont été correctement copiés, y compris ceux qui n’ont pas été réellement copiés, mais qui ont été ignorés parce qu’ils étaient déjà à jour et SkipUnchangedFiles était true . |
DestinationFiles |
Paramètre ITaskItem[] facultatif.Spécifie la liste de fichiers dans laquelle copier les fichiers sources. Cette liste est censée représenter un mappage un-à-un avec la liste spécifiée dans le paramètre SourceFiles . Autrement dit, le premier fichier spécifié dans SourceFiles est copié au premier emplacement indiqué dans DestinationFiles , et ainsi de suite. |
DestinationFolder |
Paramètre ITaskItem facultatif. Indique le répertoire dans lequel vous souhaitez copier les fichiers. Il doit s’agir d’un répertoire et non d’un fichier. Si le répertoire n’existe pas, il est créé automatiquement. |
OverwriteReadOnlyFiles |
Paramètre Boolean facultatif.Remplace les fichiers même s’ils sont marqués comme fichiers en lecture seule. |
Retries |
Paramètre Int32 facultatif.Spécifie le nombre de tentatives de copie, si toutes les tentatives précédentes ont échoué. La valeur par défaut est zéro. Avertissement : l’utilisation des tentatives peut masquer un problème de synchronisation dans votre processus de génération. Remarque : Bien que la tâche par défaut soit zéro tentative, les utilisations $(CopyRetryCount) de la tâche passent souvent sans zéro par défaut. |
RetryDelayMilliseconds |
Paramètre Int32 facultatif.Spécifie le délai entre des tentatives nécessaires. Est défini par défaut sur l’argument RetryDelayMillisecondsDefault, qui est transmis au constructeur CopyTask. |
SkipUnchangedFiles |
Paramètre Boolean facultatif.Par défaut, false . Si la valeur est définie true , ignore la copie de fichiers inchangés entre la source et la destination. La tâche Copy considère que les fichiers sont inchangés s’ils ont la même taille et la même heure de dernière modification. Remarque : si vous définissez ce paramètre sur true , vous ne devez pas utiliser l’analyse des dépendances sur la cible, car cette opération exécute uniquement la tâche si les heures de dernière modification des fichiers sources sont plus récentes que celles des fichiers de destination. |
SourceFiles |
Paramètre ITaskItem[] obligatoire.Spécifie les fichiers à copier. |
UseHardlinksIfPossible |
Paramètre Boolean facultatif.Si true , cela crée des liens physiques pour les fichiers copiés au lieu de copier les fichiers. |
UseSymbolicLinksIfPossible |
Paramètre Boolean facultatif.Si true , cela crée des liens symboliques pour les fichiers copiés plutôt que de copier les fichiers, dans la mesure du possible. |
Avertissements
Des avertissements sont enregistrés, notamment ceux-ci :
Copy.DestinationIsDirectory
Copy.SourceIsDirectory
Copy.SourceFileNotFound
Copy.CreatesDirectory
Copy.HardLinkComment
Copy.RetryingAsFileCopy
Copy.FileComment
Copy.RemovingReadOnlyAttribute
Remarques
Le paramètre DestinationFolder
ou DestinationFiles
doit être spécifié, mais pas les deux. Si les deux paramètres sont spécifiés, la tâche échoue, et une erreur est enregistrée.
En plus des paramètres énumérés ci-dessus, cette tâche hérite des paramètres de la classe TaskExtension , qui elle-même hérite de la classe Task . Pour obtenir la liste de ces paramètres supplémentaires et leurs descriptions, consultez Classe de base TaskExtension.
Exemple 1
L’exemple suivant copie les éléments de la collection d’éléments MySourceFiles
dans le dossier 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>
Exemple 2
L’exemple suivant illustre la procédure à suivre pour effectuer une copie récursive. Ce projet copie tous les fichiers de manière récursive depuis c:\MySourceTree vers c:\MyDestinationTree, tout en conservant la structure de répertoires.
<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>