次の方法で共有


Copy タスク

ファイル システム上のファイルを、新しい場所にコピーします。

パラメーター

Copy タスクのパラメーターの説明を次の表に示します。

パラメーター

Description

CopiedFiles

省略可能な ITaskItem[] 型の出力パラメーター。

正常にコピーされたアイテムが格納されます。

DestinationFiles

省略可能な ITaskItem[] 型の出力パラメーター。

ソース ファイルのコピー先ファイルの一覧を指定します。この一覧のファイルは、SourceFiles パラメーターに指定した一覧の内容と 1 対 1 で対応している必要があります。つまり、SourceFiles の最初のファイルは、DestinationFiles の最初の場所にコピーされ、2 番目以降のファイルも同様に処理されます。

DestinationFolder

省略可能な ITaskItem 型のパラメーターです。

ファイルのコピー先ディレクトリを指定します。ファイルではなく、ディレクトリである必要があります。ディレクトリが存在しない場合は、自動的に作成されます。

OverwriteReadOnlyFiles

省略可能な Boolean 型のパラメーターです。

ファイルが読み取り専用としてマークされている場合でも、ファイルを上書きします。

Retries

省略可能な Int32 型のパラメーターです。

コピーに失敗した場合の再試行回数を指定します。既定値はゼロです。

メモ: 再試行を行った場合、ビルド処理で同期の問題が生じる可能性があるので注意してください。

RetryDelayMilliseconds

省略可能な Int32 型のパラメーターです。

再試行の間隔を指定します。既定値は RetryDelayMillisecondsDefault 引数であり、これが CopyTask コンストラクターに渡されます。

SkipUnchangedFiles

省略可能な Boolean 型のパラメーターです。

true に設定すると、コピー元のファイルとコピー先のファイルで変更がない場合、コピー処理がスキップされます。Copy タスクでは、ファイルのサイズが等しく、最終更新時刻が等しい場合、ファイルは変更されていないと見なされます。

メモメモ
このパラメーターに true を設定した場合は、コピー先のファイルに対して依存関係分析を行わないでください。この設定を行った場合には、ソース ファイルの最終更新時刻が、コピー先のファイルの最終更新時刻よりも新しい場合にだけ、タスクが実行されるためです。

SourceFiles

必須の ITaskItem[] 型のパラメーターです。

コピー元となるファイルを指定します。

UseHardlinksIfPossible

省略可能な Boolean 型のパラメーターです。

true の場合、ファイルがコピーされるのではなく、コピーされたファイルのハード リンクが作成されます。

解説

DestinationFolder パラメーターか DestinationFiles パラメーターのいずれかを指定する必要がありますが、両方は指定できません。両方を指定した場合、タスクは失敗し、エラーがログに記録されます。

上記のパラメーター以外に、このタスクは TaskExtension クラスからパラメーターを継承します。このクラス自体は、Task クラスから継承されます。これらの追加のパラメーターの一覧とその説明については、「TaskExtension 基本クラス」を参照してください。

使用例

MySourceFiles アイテム コレクション内のアイテムを C:\MyProject\Destination にコピーする例を次に示します。

<Project xmlns="https://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>

再帰的なコピーを行う方法を次の例に示します。このプロジェクトでは、C:\MySourceTree から C:\MyDestinationTree に、ディレクトリ構造を維持しながら、すべてのファイルが再帰的にコピーされます。

<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">

    <ItemGroup>
        <MySourceFiles Include="c:\MySourceTree\**\*.*"/>
    </ItemGroup>

    <Target Name="CopyFiles">
        <Copy
            SourceFiles="@(MySourceFiles)"
            DestinationFiles="@(MySourceFiles->'c:\MyDestinationTree\%(RecursiveDir)%(Filename)%(Extension)')"
        />
    </Target>

</Project>

参照

概念

MSBuild タスク

その他の技術情報

MSBuild タスク リファレンス