Сохранить условие msbuild в переменной / свойстве - PullRequest
0 голосов
/ 14 февраля 2019

У меня довольно длинное условие, которое используется в нескольких последующих задачах сборки, и все они выполняются, когда условие выполняется, а не когда оно ложно, например:

<!-- In the middle of a Target -->
<Copy Condition="'$(MyProperty1)' == 'true' and '$(AnotherProperty)' == 'false' and '@(YetAnotherProperty)' != ''" ... />
<Exec Condition="'$(MyProperty1)' == 'true' and '$(AnotherProperty)' == 'false' and '@(YetAnotherProperty)' != ''" ... />
<CustomTask Condition="'$(MyProperty1)' == 'true' and '$(AnotherProperty)' == 'false' and '@(YetAnotherProperty)' != ''" ... />

Это довольно раздражаетпопробовать и прочитать.Можно ли как-то «сохранить» это условие в какой-либо переменной или свойстве?Как:

MyVariable = "'$(MyProperty1)' == 'true' and '$(AnotherProperty)' == 'false' and '@(YetAnotherProperty)' != ''"
<Copy Condition="MyVariable" ... />
<Exec Condition="MyVariable" ... />
<CustomTask Condition="MyVariable" ... />

Я нашел элемент «Выбрать», но он не разрешен в Target, поэтому он не работает.

1 Ответ

0 голосов
/ 14 февраля 2019

Если я правильно понял ваши требования, я думаю, что вам нужно просто определить свойство.

<PropertyGroup>
    <MyProperty>False</MyProperty> <!-- defaulting to false -->
    <MyProperty Condition="...Some long condition...">True</MyProperty>
</PropertyGroup>

... Позже

<Copy Condition="$(MyProperty)" ... />

(Примечаниехотя то, работает ли это для вашего точного случая, может зависеть от содержания условия, в связи с порядком, в котором MSBuild оценивает Свойства против Предметов.)

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