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

Msbuild 我可以基于属性(而不仅仅是项目)进行批处理吗?,msbuild,Msbuild,我有一个属性组,如下所示: <PropertyGroup> <Platform>Win32;x64</Platform> </PropertyGroup> <Exec Command='devenv MySolution.sln /Build "Release|%(Platform)"' /> 我可以在列表属性上批处理任务吗?我想我可以通过创建一个带有元数据的占位符ItemGroup并在其上批处理来破解它。因为您的属性由分隔

我有一个属性组,如下所示:

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

我可以在列表属性上批处理任务吗?我想我可以通过创建一个带有元数据的占位符ItemGroup并在其上批处理来破解它。

因为您的属性由
分隔您可以直接从中创建项目,然后从中进行批处理。比如说

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

Win32;x64

这里我使用
%(\u PlatformItem.Identity)
进行批处理,因为Identity具有值(Win32和x64)。

+1表示.Identity提示。%()语法不可能在谷歌上搜索到。
<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>