2009-07-14 108 views
0

我有我的MSBuild腳本以下任務: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: 阿拉斯加 CREATING ZIP CREATING郵政編碼爲佛羅里達州 爲路易斯安那州創建郵政編碼 創建zip文件「C:\ StagingArea \ v5_6_0 \ States \ Alaska \ v5_6_0AK.zip」。

看來,當我以這種方式執行批處理時,項目組中每個節點都會執行任務中的每個命令,然後進入下一步。我最終得到的是3個拉鍊,都包含相同的文件。

任何人都有我如何能做到這一點不同的想法?

+0

你到底想要結束什麼,而不是3個不同的拉鍊? – 2009-07-14 21:41:33

+0

基本上每個只包含文件的狀態爲zip。 – NotMyself 2009-07-14 21:44:48

回答

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>