次の方法で共有


Copy タスク

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

パラメーター

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

パラメーター 説明
CopiedFiles 省略可能な ITaskItem[] 型の出力パラメーターです。

正常にコピーされた項目が含まれます。これには、実際にはコピーされていないけれども、既に最新の状態であり、SkipUnchangedFilestrue であったためにスキップされたものも含まれます
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>

関連項目