2010-03-17 44 views
3

我在TFS中的AfterGet目標中具有以下內容。MsBuild WriteLinesToFile在多個文件上的任務

<ItemGroup> 
    <AssemblyInfoFiles Include="$(SolutionRoot)\**\*assemblyinfo.cs" /> 
</ItemGroup> 
<WriteLinesToFile 
     File="@(AssemblyInfoFiles)" 
     Lines="AssemblyInformationalVersion(&quot;$(LabelName)&quot;)]" 
     Overwrite="false"/> 

ItemGroup包含多個文件,但WriteLinesToFile只需要一個文件。

並記錄以下錯誤: 錯誤MSB4094:「XXXX; YYYY; ZZZZ」是「WriteLinesToFile」任務的「File」參數的無效值。多個項目不能傳遞到「Microsoft.Build.Framework.ITaskItem」類型的參數中。

如何將每個項目從ItemGroup傳遞到WriteLinesToFile任務?

回答

9

您可以使用批處理:儘量

<ItemGroup> 
    <AssemblyInfoFiles Include="$(SolutionRoot)\**\*assemblyinfo.cs" /> 
</ItemGroup> 
<WriteLinesToFile 
     File="%(AssemblyInfoFiles.FullPath)" 
     Lines="AssemblyInformationalVersion(&quot;$(LabelName)&quot;)]" 
     Overwrite="false"/> 

希望它能幫助!

+0

我沒有看到你的答案,然後張貼我自己的,對不起。 – 2010-03-17 11:54:57

+0

沒問題; o)如果你想做強大的事情希望MSBuild,你應該瞭解批量,變換和元數據 – 2010-03-17 12:04:26