2010-03-08 59 views
4

我有一個屬性組,就像這樣:我可以批量基於屬性(不只是項目)嗎?

<PropertyGroup> 
    <Platform>Win32;x64</Platform> 
</PropertyGroup> 

我想批量在Exec的任務,像這樣:

<Exec Command='devenv MySolution.sln /Build "Release|%(Platform)"' /> 

但當然,正如所寫的,我得到一個錯誤:

error MSB4095: The item metadata %(Platform) is being referenced without an item name. Specify the item name by using %(itemname.Platform). 

我可以對列表屬性進行批處理嗎?我想我可以通過創建一個帶有元數據和批處理的佔位符ItemGroup來破解它。

回答

13

由於您的財產被;分開,您可以直接從中創建一個項目,然後從該項目進行批處理。例如。

<Project ToolsVersion="3.5" DefaultTargets="Demo" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    <Platform>Win32;x64</Platform> 
    </PropertyGroup> 

    <Target Name="Demo"> 
    <ItemGroup> 
     <_PlatFormItem Include="$(Platform)"/> 
    </ItemGroup> 

    <Message Text="Platform: $(Platform)"/> 
    <Message Text="_PlatFormItem: @(_PlatFormItem)"/> 
    <Message Text="Platform.Identity: %(_PlatFormItem.Identity)"/> 

    <Exec Command='devenv MySolution.sln /Build "Release|%(_PlatFormItem.Identity)"' /> 
    </Target> 

</Project> 

這裏我使用%(_PlatformItem.Identity)因爲身份具有價值(Win32和x64)的配料。

+1

對於.Identity小費。 %()語法對谷歌來說是不可能的。 – marklam 2010-03-18 15:59:08

+0

錯誤消息是BS照常。 – Mrchief 2012-08-23 15:07:39

相關問題