我使用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将本地计算机上保存的文件复制到远程计算机上的共享位置。请帮忙
答案 0 :(得分:2)
您需要迭代文件:
<Copy SourceFiles="%(ServiceFilesToDeploy.Identity)"
DestinationFiles="@(ServiceFilesToDeploy->'$(PublishDir)\%(RecursiveDir)%(Filename)%(Extension)')"
ContinueOnError="false" />
这样就可以为ServiceFilesToDeploy中的每个文件调用复制任务。
答案 1 :(得分:0)
您甚至不需要进行批处理,因为复制任务了解itemgroups:
<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>