Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Kopiowanie plików do nowej lokalizacji w systemie plików.
Parametry
W poniższej tabeli opisano parametry Copy zadania.
| Parametr | Opis |
|---|---|
CopiedFiles |
Opcjonalny ITaskItem[] parametr wyjściowy.Zawiera elementy, które zostały pomyślnie skopiowane, w tym te, które nie zostały skopiowane, ale zostały pominięte, ponieważ były już aktualne i SkipUnchangedFiles były true. |
DestinationFiles |
Opcjonalny ITaskItem[] parametr.Określa listę plików, do których należy skopiować pliki źródłowe. Ta lista powinna być zmapowana jeden-do-jednego na listę określoną w parametrze SourceFiles. Oznacza to, że pierwszy plik określony w parametrze SourceFiles będzie kopiowany do pierwszej lokalizacji określonej w parametrze DestinationFiles itd. |
DestinationFolder |
Opcjonalny ITaskItem parametr. Określa katalog, do którego pliki mają zostać skopiowane. Musi to być katalog, a nie plik. Jeśli katalog nie istnieje, zostanie utworzony automatycznie. |
OverwriteReadOnlyFiles |
Opcjonalny Boolean parametr.Zastępowanie plików następuje nawet wtedy, gdy są oznaczone jako tylko do odczytu. |
Retries |
Opcjonalny Int32 parametr.Określa, ile razy należy podjąć próbę kopiowania, jeśli wszystkie poprzednie próby się nie powiodły. Domyślnie przyjmuje wartość zero. Uwaga: użycie ponownych prób może maskować problem z synchronizacją w procesie kompilacji. Uwaga: Podczas gdy domyślna wartość zadania to zero ponownych prób, użycie zadania często przekazuje $(CopyRetryCount) wartość niezerową. |
RetryDelayMilliseconds |
Opcjonalny Int32 parametr.Określa opóźnienie między kolejnymi niezbędnymi ponownymi próbami. Wartością domyślną jest wartość argumentu RetryDelayMillisecondsDefault, który jest przekazywany do konstruktora CopyTask. |
SkipUnchangedFiles |
Opcjonalny Boolean parametr.Domyślnie . false Jeśli ustawiono wartość true, pomija kopiowanie plików bez zmian między źródłem a miejscem docelowym. Zadanie Copy uznaje pliki za niezmienione, jeśli mają taki sam rozmiar i taki sam czas ostatniej modyfikacji. Uwaga: Jeśli ustawisz ten parametr na truewartość , nie należy używać analizy zależności w obiekcie docelowym zawierającym, ponieważ uruchamia to zadanie tylko wtedy, gdy czas ostatniej modyfikacji plików źródłowych jest nowszy niż czas ostatniej modyfikacji plików docelowych. |
SourceFiles |
Wymagany parametr interfejsu ITaskItem[].Określa pliki do skopiowania. |
UseHardlinksIfPossible |
Opcjonalny Boolean parametr.Jeśli trueprogram tworzy twarde linki dla skopiowanych plików zamiast kopiować pliki. |
UseSymbolicLinksIfPossible |
Opcjonalny Boolean parametr.Jeśli trueprogram tworzy łącza symboliczne dla skopiowanych plików, zamiast kopiować pliki, jeśli jest to możliwe. |
Ostrzeżenia
Ostrzeżenia są rejestrowane, w tym:
Copy.DestinationIsDirectoryCopy.SourceIsDirectoryCopy.SourceFileNotFoundCopy.CreatesDirectoryCopy.HardLinkCommentCopy.RetryingAsFileCopyCopy.FileCommentCopy.RemovingReadOnlyAttribute
Uwagi
Musi być określony parametr DestinationFolder lub DestinationFiles, ale nie oba. W razie podania obu parametrów zadanie nie powiedzie się i zostanie zarejestrowany błąd.
Oprócz parametrów wymienionych powyżej to zadanie dziedziczy parametry z TaskExtension klasy, która sama dziedziczy z Task klasy. Aby uzyskać listę tych dodatkowych parametrów i ich opisy, zobacz TaskExtension, klasa bazowa.
Przykład 1
Poniższy przykład kopiuje elementy w MySourceFiles kolekcji elementów do folderu c:\MyProject\Destination.
<Project>
<ItemGroup>
<MySourceFiles Include="a.cs;b.cs;c.cs"/>
</ItemGroup>
<Target Name="CopyFiles">
<Copy
SourceFiles="@(MySourceFiles)"
DestinationFolder="c:\MyProject\Destination"
/>
</Target>
</Project>
Przykład 2
Poniższy przykład ilustruje, jak wykonać kopiowanie cykliczne. Ten projekt kopiuje wszystkie pliki rekursywnie z c:\MySourceTree do c:\MyDestinationTree, zachowując strukturę katalogu.
<Project>
<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>