1

ソリューションをビルドし、すべてのデータをフォルダーに保持する MSBuild を使用してビルド ファイルを作成しました。ここで、共有フォルダー経由でアクセスするリモート マシンにすべてのデータをコピーしたいと考えています。

 <PropertyGroup>
    <PublishDir>\\remoteMachineName\QA</PublishDir>
    <ServiceLocationQA>remoteMachineName\QA</ServiceLocationQA>
    <MachineName>remoteMachineName</MachineName>
  </PropertyGroup>

<ItemGroup>
       <Source Include=".\buildartifacts\**\*.*"/>
    <ServiceFilesToDeploy Include=".\buildartifacts\**\*.*" />
 </ItemGroup>

<Copy SourceFiles=".\buildartifacts\**\*.*"
       DestinationFiles="@(ServiceFilesToDeploy->'$(PublishDir)\%(RecursiveDir)%(Filename)%(Extension)')"
          ContinueOnError="false" />

ビルド スクリプトを実行した後、次のエラーが発生します。

「DestinationFiles」は 48 個のアイテムを参照し、「SourceFiles」は 1 個のアイテムを参照します。それらは同じ数のアイテムを持っている必要があります。」

MSBuild を使用して、ローカル マシンに保存されているファイルをリモート マシンの共有の場所にコピーしたいだけです。助けてください

4

2 に答える 2

2

ファイルを繰り返す必要があります。

    <Copy SourceFiles="%(ServiceFilesToDeploy.Identity)"
       DestinationFiles="@(ServiceFilesToDeploy->'$(PublishDir)\%(RecursiveDir)%(Filename)%(Extension)')"
          ContinueOnError="false" />

そうすれば、ServiceFilesToDeploy 内の各ファイルに対してコピー タスクが呼び出されます。

于 2013-06-04T07:36:24.293 に答える
0

コピー タスクは項目グループを理解するので、バッチ処理を行う必要さえありません。

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Target Name="Test">
    <PropertyGroup>
      <PublishDir>\\remotemachine\test</PublishDir>
      <BuildArtifacts>.\buildartifacts</BuildArtifacts>
    </PropertyGroup>

    <ItemGroup>
      <Source Include="$(BuildArtifacts)\**\*.*"/>
    </ItemGroup>

    <Copy SourceFiles="@(Source)"
           DestinationFolder="$(PublishDir)\%(RecursiveDir)"/>
  </Target>
</Project>
于 2013-06-06T08:38:17.237 に答える