2014-09-19 42 views
0

说我有一个项目结构3个应用程序:的MSBuild复制配料问题

├───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> 

我知道有什么不对的机智h批处理,但我无法弄清楚如何解决它。 任何想法,我错了吗?

<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

我找到了解决方案,基于以下SO后: How can I use MSBuild Copy Task to Copy To Multiple Destination Folders?

我的问题是没有一个“输出”属性。目标配料(我需要的)只有当这个到位时才起作用。

所以,我修改了目标从:

<Target Name="Deploy"> 

<Target Name="Deploy" Outputs="%(Project.Identity)"> 

,一切都很好。