Могу ли я сделать пакет на основе свойства (не только элементов)? - PullRequest
4 голосов
/ 09 марта 2010

У меня есть группа свойств, вот так:

<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 Ответ

13 голосов
/ 10 марта 2010

Поскольку ваша собственность отделена ;, вы можете напрямую создать элемент из него, а затем выполнить пакет из него. Например.

<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), потому что Identity имеет значения (Win32 и x64).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...