Freigeben über


Copy-Aufgabe

Kopiert Dateien an einen neuen Speicherort im Dateisystem.

Parameter

In der folgenden Tabelle werden die Parameter der Copy -Aufgabe beschrieben.

Parameter Beschreibung
CopiedFiles Optionaler ITaskItem[] -Ausgabeparameter.

Enthält die Elemente, die erfolgreich kopiert wurden, einschließlich derer, die nicht tatsächlich kopiert sondern übersprungen wurden, weil sie bereits auf dem neuesten Stand sind und SkipUnchangedFiles den Wert true aufweist.
DestinationFiles Optionaler ITaskItem[]-Parameter

Gibt die Liste der Dateien an, in die die Quelldateien kopiert werden sollen. Diese Liste soll der im SourceFiles-Parameter angegebenen Liste eins zu eins entsprechen. Das heißt, die erste in SourceFiles angegebene Datei wird an den ersten in DestinationFiles angegebenen Speicherort kopiert usw.
DestinationFolder Optionaler ITaskItem-Parameter.

Gibt das Verzeichnis an, in das die Dateien kopieren werden sollen. Es muss sich um ein Verzeichnis handeln, nicht um eine Datei. Wenn das Verzeichnis nicht vorhanden ist, wird es automatisch erstellt.
OverwriteReadOnlyFiles Optionaler Boolean-Parameter.

Überschreibt Dateien, auch wenn diese als schreibgeschützte gekennzeichnet sind
Retries Optionaler Int32-Parameter.

Gibt die Anzahl der vorgesehenen Kopierversuche an, wenn alle vorherigen Versuche fehlgeschlagen sind. Der Standardwert ist 0 (null).

Vorsicht: Die Verwendung von Wiederholungen kann ein Synchronisierungsproblem im Buildprozess maskieren.

Hinweis: Der Standardwert für task sind 0 Wiederholungen, allerdings wird durch Verwendungen des Tasks häufig $(CopyRetryCount) übergeben, ///was standardmäßig nicht 0 ist.
RetryDelayMilliseconds Optionaler Int32-Parameter.

Gibt die Verzögerung zwischen jeglichen erforderlichen Wiederholungen an. Standardwert ist das RetryDelayMillisecondsDefault-Argument, das an den CopyTask-Konstruktor übergeben wird.
SkipUnchangedFiles Optionaler Boolean-Parameter.

Standardmäßig false. Bei Festlegung auf true, überspringt das Kopieren von Dateien, die zwischen der Quelle und dem Ziel unverändert sind. In der Copy-Aufgabe werden Dateien als identisch betrachtet, wenn diese dieselbe Größe aufweisen und zur selben Zeit zuletzt geändert wurden.

Hinweis: Wenn Sie diesen Parameter auf true festlegen, sollten Sie für das enthaltende Ziel aus folgendem Grund nicht die Abhängigkeitsanalyse verwenden: Die Aufgabe wird nur dann ausgeführt, wenn die letzte Änderung der Quelldateien weniger lange zurück liegt als die letzte Änderung der Zieldateien.
SourceFiles Erforderlicher ITaskItem[]-Parameter.

Gibt die zu kopierenden Dateien an.
UseHardlinksIfPossible Optionaler Boolean-Parameter.

Falls true, werden für die kopierten Dateien feste Links erstellt, statt die Dateien zu kopieren.
UseSymbolicLinksIfPossible Optionaler Boolean-Parameter.

Falls true, werden nach Möglichkeit symbolische Links für die kopierten Dateien erstellt, anstatt die Dateien zu kopieren.

Warnungen

Warnungen werden protokolliert, darunter:

  • Copy.DestinationIsDirectory

  • Copy.SourceIsDirectory

  • Copy.SourceFileNotFound

  • Copy.CreatesDirectory

  • Copy.HardLinkComment

  • Copy.RetryingAsFileCopy

  • Copy.FileComment

  • Copy.RemovingReadOnlyAttribute

Hinweise

Es muss entweder der DestinationFolder-Parameter oder der DestinationFiles-Parameter angegeben werden, jedoch nicht beide. Wenn beide angegeben werden, schlägt der Task fehl, und ein Fehler wird protokolliert.

Zusätzlich zu den oben aufgeführten Parametern erbt diese Aufgabe Parameter von der TaskExtension-Klasse, die selbst von der Task-Klasse erbt. Eine Liste mit diesen zusätzlichen Parametern und ihren Beschreibungen finden Sie unter TaskExtension-Basisklasse.

Beispiel 1

Im folgenden Beispiel werden die Elemente in der MySourceFiles-Elementauflistung in den Ordner C:\MyProject\Destination kopiert.

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

Beispiel 2

Im folgenden Beispiel wird veranschaulicht, wie ein rekursiver Kopiervorgang ausgeführt wird. In diesem Projekt werden alle Dateien rekursiv von C:\MySourceTree nach C:\MyDestinationTree kopiert, wobei die Verzeichnisstruktur beibehalten wird.

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

Weitere Informationen