Ссылка на свойство msbuild с использованием содержимого другого свойства - PullRequest
2 голосов
/ 21 октября 2010

Я хочу иметь возможность ссылаться на свойство msbuild (3), используя содержимое другого свойства.Например:

    <PropertyGroup>
        <SelectVariable>Test</SelectVariable>
        <TestVariable>1</TestVariable>
        <FullVariable>2</FullVariable>
    </PropertyGroup>

    <Message Text="Value $($(SelectVariable)Variable)"/>

В этом сценарии я хочу выводить содержимое TestVariable (1).Возможно ли это?

Ответы [ 3 ]

2 голосов
/ 23 октября 2010

Конечно, это возможно, просто сделайте:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <SelectVariable>Test</SelectVariable>
    <TestVariable>1</TestVariable>
    <FullVariable>2</FullVariable>
  </PropertyGroup>

  <Target Name="Demo01">
    <PropertyGroup>
      <Value>$(SelectVariable)Variable</Value>
    </PropertyGroup>
    <Message Text="Value $(Value)"/>
  </Target>

</Project>

Результат показан на рисунке ниже. alt text

2 голосов
/ 22 октября 2010

Я не верю, что это возможно. Тем не менее, вы можете добиться аналогичного эффекта с ItemGroups:

<PropertyGroup>
    <SelectVariable>Test</SelectVariable>
</PropertyGroup>

<ItemGroup>
    <Variable Include="1">
        <Select>Test</Select>
    </Variable>
    <Variable Include="2">
        <Select>Full</Select>
    </Variable>
</ItemGroup>

<Message Text="@(Variable)"
         Condition=" '%(Select)' == '$(SelectVariable)' " />

Это немного неуклюже, хотя ...

1 голос
/ 23 октября 2010

Вы можете использовать задачу <Choose> для достижения чего-то подобного, но (как сказал Питер) это, вероятно, будет на некотором расстоянии от вашего желания иметь что-то короткое и содержательное.

Возможно, psake - это ответ - у него нет таких произвольных и ничтожных ограничений при вложении выражений и скобок: P

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