使用MSBuild将本地计算机上保留的文件复制到远程计算机上的共享位置
我已经使用MSBuild创建了一个构建文件,它构建解决方案并将所有数据保存到一个文件夹中。现在,我想将所有数据复制到通过共享文件夹访问的远程计算机上使用MSBuild将本地计算机上保留的文件复制到远程计算机上的共享位置,msbuild,msbuild-task,msbuild-4.0,msbuildextensionpack,Msbuild,Msbuild Task,Msbuild 4.0,Msbuildextensionpack,我已经使用MSBuild创建了一个构建文件,它构建解决方案并将所有数据保存到一个文件夹中。现在,我想将所有数据复制到通过共享文件夹访问的远程计算机上 <PropertyGroup> <PublishDir>\\remoteMachineName\QA</PublishDir> <ServiceLocationQA>remoteMachineName\QA</ServiceLocationQA> <Mach
<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" />
\\remoteMachineName\QA
remoteMachineName\QA
远程机器名
在执行构建脚本后,出现以下错误:
“DestinationFiles”指48项,“SourceFiles”指1项。它们必须具有相同数量的项目。”
我只想使用MSBuild将本地计算机上保存的文件复制到远程计算机上的共享位置。请提供帮助。您需要迭代这些文件:
<Copy SourceFiles="%(ServiceFilesToDeploy.Identity)"
DestinationFiles="@(ServiceFilesToDeploy->'$(PublishDir)\%(RecursiveDir)%(Filename)%(Extension)')"
ContinueOnError="false" />
这样,将为ServiceFilesToDeploy中的每个文件调用复制任务。您甚至不需要执行批处理,因为复制任务了解项目组:
<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>
\\远程计算机\测试
建筑艺术品
感谢您的快速回复。请您解释一下这段代码在做什么。区别在于,您的代码将使用文件列表作为输入,而按我的方式执行时,将迭代列表并调用每个元素的目标。请检查这里我在MSBuild中解释了批处理。