Как создать запись PropertyGroup из ItemGroup в MSBuild? - PullRequest
4 голосов
/ 18 марта 2011

Я очень новичок в MSBuild, и мне трудно понять, как создать запись PropertyGroup из условных частей.

Вот что у меня есть, что не работает:

<ItemGroup>
    <CompilerDirective Include="DEBUG_PARANOID" Condition=" '$(SomeFlag)' == 'true' "/>
    <CompilerDirective Include="DEBUG"/>
    <CompilerDirective Include="TRACE"/>
</ItemGroup>

<PropertyGroup>
    ...
    <DefineConstants>@(CompilerDirective)</DefineConstants>
    ...
</PropertyGroup>

Мне бы хотелось, чтобы определяемые константы отображались как DEBUG_PARANOID; DEBUG; TRACE, если для SomeFlag установлено значение true, а в противном случае - для DEBUG_PARANOID. Кстати, для .csproj.

Если я распечатываю @ (CompilerDirective) с задачей сообщения, это работает.

У меня вопрос, как заставить это работать внутри записи PropertyGroup?

1 Ответ

7 голосов
/ 18 марта 2011

То, что у вас есть выше, работает.Я запустил это:

<Target Name="Test">
  <ItemGroup>
      <CompilerDirective Include="DEBUG_PARANOID"
        Condition=" '$(SomeFlag)' == 'true' "/>
      <CompilerDirective Include="DEBUG"/>
      <CompilerDirective Include="TRACE"/>
  </ItemGroup>
  <PropertyGroup>
    <DefineConstants>@(CompilerDirective)</DefineConstants>
  </PropertyGroup>
  <Message Text="$(DefineConstants)" />
</Target>

и получил правильный вывод DEBUG; TRACE или DEBUG_PARANOID; DEBUG; TRACE в зависимости от значения свойства.Каким образом это не работает для вас?

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