Partager via


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>

Voir aussi