Copy タスク
ファイルをファイル システム上の新しい場所にコピーします。
パラメーター
Copy
タスクのパラメーターの説明を次の表に示します。
パラメーター | 説明 |
---|---|
CopiedFiles |
省略可能な ITaskItem[] 型の出力パラメーターです。正常にコピーされた項目が含まれます。これには、実際にはコピーされていないけれども、既に最新の状態であり、 SkipUnchangedFiles が true であったためにスキップされたものも含まれます。 |
DestinationFiles |
省略可能な ITaskItem[] 型のパラメーターです。ソース ファイルのコピー先ファイルの一覧を指定します。 この一覧のファイルは、 SourceFiles パラメーターに指定した一覧の内容と 1 対 1 で対応している必要があります。 つまり、SourceFiles の最初のファイルは、DestinationFiles の最初の場所にコピーされ、2 番目以降のファイルも同様に処理されます。 |
DestinationFolder |
省略可能な ITaskItem 型のパラメーターです。 ファイルのコピー先ディレクトリを指定します。 ファイルではなく、ディレクトリである必要があります。 ディレクトリが存在しない場合は、自動的に作成されます。 |
OverwriteReadOnlyFiles |
省略可能な Boolean 型のパラメーターです。ファイルが読み取り専用としてマークされている場合でも、ファイルを上書きします。 |
Retries |
省略可能な Int32 型のパラメーターです。コピーに失敗した場合の再試行回数を指定します。 既定値はゼロです。 注意: 再試行を行った場合、ビルド処理で同期の問題が生じる可能性があるので注意してください。 注意: タスク の既定では再試行はんしですが、タスクを使用するとき、既定では 0 ではない $(CopyRetryCount) を渡すことがよくあります。 |
RetryDelayMilliseconds |
省略可能な Int32 型のパラメーターです。再試行の間隔を指定します。 既定値は RetryDelayMillisecondsDefault 引数であり、これが CopyTask コンストラクターに渡されます。 |
SkipUnchangedFiles |
省略可能な Boolean 型のパラメーターです。既定では、 false . に設定すると true 、ソースとコピー先の間で変更されていないファイルのコピーがスキップされます。 Copy タスクでは、ファイルのサイズが等しく、最終更新時刻が等しい場合、ファイルは変更されていないと見なされます。 メモ: このパラメーターに true を設定した場合は、コピー先のファイルに対して依存関係分析を行わないでください。この設定を行った場合には、ソース ファイルの最終更新時刻が、コピー先のファイルの最終更新時刻よりも新しい場合にだけ、タスクが実行されるためです。 |
SourceFiles |
必須の ITaskItem[] 型のパラメーターです。コピー元となるファイルを指定します。 |
UseHardlinksIfPossible |
省略可能な Boolean 型のパラメーターです。true の場合、ファイルがコピーされるのではなく、コピーされたファイルのハード リンクが作成されます。 |
UseSymbolicLinksIfPossible |
省略可能な Boolean 型のパラメーターです。true の場合、可能な場合はファイルがコピーされるのではなく、コピーしたファイルのシンボリック リンクが作成されます。 |
警告
次のような警告が記録されます。
Copy.DestinationIsDirectory
Copy.SourceIsDirectory
Copy.SourceFileNotFound
Copy.CreatesDirectory
Copy.HardLinkComment
Copy.RetryingAsFileCopy
Copy.FileComment
Copy.RemovingReadOnlyAttribute
解説
DestinationFolder
パラメーターか DestinationFiles
パラメーターのいずれかを指定する必要がありますが、両方は指定できません。 両方を指定した場合、タスクは失敗し、エラーがログに記録されます。
上記のパラメーター以外に、このタスクは TaskExtension クラスからパラメーターを継承します。このクラス自体は、Task クラスから継承されます。 これらの追加のパラメーターの一覧とその説明については、「TaskExtension Base Class」を参照してください。
例 1
MySourceFiles
アイテム コレクション内のアイテムを 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>
例 2
再帰的なコピーを行う方法を次の例に示します。 このプロジェクトでは、C:\MySourceTree から C:\MyDestinationTree に、ディレクトリ構造を維持しながら、すべてのファイルが再帰的にコピーされます。
<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>