代码之家  ›  专栏  ›  技术社区  ›  Josh Buedel

是否可以基于属性(而不仅仅是项目)进行批处理?

  •  4
  • Josh Buedel  · 技术社区  · 16 年前

    <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来破解它。

    1 回复  |  直到 16 年前
        1
  •  13
  •   Sayed Ibrahim Hashimi    16 年前

    因为你的房子被一个 ; 您可以直接从中创建一个项目,然后从中进行批处理。例如。

    <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)。