0

我的 MSBuild 脚本中有以下任务:

 <Target Name="ZipStates">
    <Message Text="CREATING ZIP FOR %(StateSet.Name)" />

    <CreateItem Include="$(StagingArea)\v$(VersionString)\States\%(StateSet.Name)\v$(VersionString)%20%(StateSet.Abbreviation)XTend\**\*.*" >
      <Output ItemName="ZipFiles" TaskParameter="Include"/>
    </CreateItem>

    <MSBuild.Community.Tasks.Zip Files="@(ZipFiles)"
          ZipFileName="$(StagingArea)\v$(VersionString)\States\%(StateSet.Name)\v$(VersionString)%(StateSet.Abbreviation).zip" />

  </Target>

<ItemGroup>
    <StateSet Include="AK">
      <Name>Alaska</Name>
      <Abbreviation>AK</Abbreviation>
    </StateSet>
    <StateSet Include="FL">
      <Name>Florida</Name>
      <Abbreviation>FL</Abbreviation>
    </StateSet>
    <StateSet Include="LA">
      <Name>Louisiana</Name>
      <Abbreviation>LA</Abbreviation>
    </StateSet>
</ItemGroup>

输出如下所示:

ZipStates:为阿拉斯加创建 ZIP 为佛罗里达创建 ZIP 为路易斯安那创建 ZIP 创建 zip 文件“C:\StagingArea\v5_6_0\States\Alaska\v5_6_0AK.zip”。

似乎当我以这种方式执行批处理时,任务中的每个命令都会针对项目组批处理中的每个节点执行,然后继续执行下一步。我最终得到的是 3 个包含相同文件的 zip。

任何人都知道我可以如何以不同的方式做到这一点?

4

1 回答 1

0

弄清楚了。我需要修改创建文件列表的方式,使每个列表都是唯一的。像这样:

<Target Name="ZipStates">

    <CreateItem Include="$(StagingArea)\v$(VersionString)\States\%(StateSet.Name)\v$(VersionString)%20%(StateSet.Abbreviation)XTend\**\*.*"
                Exclude="web.config">
      <Output ItemName="XtendZipFiles%(StateSet.Abbreviation)" TaskParameter="Include"/>
    </CreateItem>

    <MSBuild.Community.Tasks.Zip Files="@(XtendZipFiles%(StateSet.Abbreviation))"
          ZipFileName="$(StagingArea)\v$(VersionString)\States\%(StateSet.Name)\v$(VersionString)%(StateSet.Abbreviation)XTend.zip" />

  </Target>
于 2009-07-14T21:44:02.460 回答