【问题标题】:MSBuild Copy batching issueMSBuild Copy 批处理问题
【发布时间】:2014-09-19 02:16:31
【问题描述】:

假设我有一个包含 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>

【问题讨论】:

    标签: msbuild copy batching


    【解决方案1】:

    我根据以下 SO 帖子找到了解决方案: How can I use MSBuild Copy Task to Copy To Multiple Destination Folders?

    我的问题是没有“输出”属性。目标批处理(我需要的)只有在它到位时才有效。

    所以,我修改了目标:

    <Target Name="Deploy">
    

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

    一切都很好。

    【讨论】:

      猜你喜欢
      • 2013-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多