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 に答える