MSBuild副本批处理问题

MSBuild副本批处理问题,msbuild,copy,batching,Msbuild,Copy,Batching,假设我有一个包含3个应用程序的项目结构: ├───app1 ├───app2 ├───app3 我希望使用msbuild任务将每个应用程序的相关输出复制到单独的部署位置 deploy\app1\<app1.output> deploy\app2\<app2.output> deploy\app3\<app3.output> deploy\app1\ 部署\app2\ 部署\app3\ 下面的脚本执行以下操作: deploy\app1\<app1.o

假设我有一个包含3个应用程序的项目结构:

├───app1
├───app2
├───app3
我希望使用msbuild任务将每个应用程序的相关输出复制到单独的部署位置

deploy\app1\<app1.output>
deploy\app2\<app2.output>
deploy\app3\<app3.output>
deploy\app1\
部署\app2\
部署\app3\
下面的脚本执行以下操作:

deploy\app1\<app1.output> + <app2.output> + <app3.output>
deploy\app2\<app1.output> + <app2.output> + <app3.output>
deploy\app3\<app1.output> + <app2.output> + <app3.output>
deploy\app1\++
部署\app2\++
部署\app3\++
我知道配料有问题,但我不知道如何解决。 知道我哪里弄错了吗

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

我根据以下文章找到了解决方案:

我的问题是没有“输出”属性。目标批处理(我需要的)只有在适当的时候才能工作

因此,我将目标修改为:

<Target Name="Deploy">


一切都很好

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