假设我有一个包含3个应用程序的项目结构:
├───app1
├───app2
├───app3
我希望有一个msbuild任务将每个应用程序的相关输出复制到一个单独的部署位置
deploy\app1\<app1.output>
deploy\app2\<app2.output>
deploy\app3\<app3.output>
以下脚本执行以下操作:
deploy\app1\<app1.output> + <app2.output> + <app3.output>
deploy\app2\<app1.output> + <app2.output> + <app3.output>
deploy\app3\<app1.output> + <app2.output> + <app3.output>
我知道批处理有问题,但我无法弄清楚如何修复它。 我有错的任何想法?
<Target Name="Deploy">
<!-- Ensure the target home exists -->
<MakeDir Directories="$(DeployPath)" />
<!-- Select artefacts -->
<ItemGroup>
<ProjectPath Include="%(Project.BuildOutput)" />
<ArtefactSource Include="%(ProjectPath.RootDir)%(ProjectPath.Directory)**\*.*" />
</ItemGroup>
<!-- copy files to respective artefact location -->
<Copy SourceFiles="@(ArtefactSource)" DestinationFolder="$(DeployPath)\%(Project.Identity)"
Condition="'%(Project.CanDeploy)' AND '%(Project.TestWasRun)' != 'Error'" />
</Target>
答案 0 :(得分:0)
我找到了解决方案,基于以下SO帖子: How can I use MSBuild Copy Task to Copy To Multiple Destination Folders?
我的问题是没有&#39;输出&#39;属性。目标批处理(我需要的)只有在适当的时候才有效。
所以,我修改了目标:
<Target Name="Deploy">
到
<Target Name="Deploy" Outputs="%(Project.Identity)">
一切都很好。