Есть ли какая-нибудь задача MSbuild, чтобы проверить, содержит ли строка другую строку (аналогично string.contains)

У меня есть этот код Msbuild:

<Import Project="A.proj" Condition="$(BuildDefinition) =='Dist Staging to Dev' Or $(BuildDefinition) =='Dist Staging to Dev(Services Only)'"/>

Но мне было интересно, есть ли что-нибудь подобное, чтобы проверить, содержит ли строка текст, чтобы получить что-то похожее на:

<Import Project="A.proj" Condition="$(BuildDefinition) CONTAINS 'Dist Staging to Dev'"/>

person Oscar Foley    schedule 20.07.2010    source источник


Ответы (3)


Если вы используете MSBuild 4, вы можете использовать Property function

<Import Project="A.proj" 
        Condition="$(BuildDefinition.Contains('Dist Staging to Dev'))"/>

(Подробнее о функции свойств)

person Julien Hoarau    schedule 20.07.2010
comment
Работает, хотя синтаксис кажется несколько нелогичным... в вашем примере, если бы результат условия был истинным, он мог бы читать условие = $ (истина). Если вы использовали ИЛИ - условие=$(истина) ИЛИ $(ложь). Так что же делает $(...)? Выполняет ли он все, что находится между скобками, или просто записывает это в выражение условия перед выполнением? - person Jacques; 07.01.2021

MSBuild4: Как сказал Жюльен, в MSBUILD 4 можно использовать функцию свойств пользователя.

MSBuild 3.x: в предыдущих версиях это возможно при использовании Tigris MsBuild Tasks.

Вы можете использовать задачу RegexMatch и использовать регулярное выражение

person Oscar Foley    schedule 26.07.2010

MsBuild Справочник по условиям ничего не говорит о возможности " содержит" функцию. Похоже, ваша первая версия - единственный вариант.

person Igor Zevaka    schedule 20.07.2010
comment
Как указывали другие, MSBuild 4 не добавляет новый синтаксис для условий, но вместо этого позволяет использовать функции свойств (blogs.msdn.com/b/msbuild/archive/2010/04/02/). - person BCran; 23.04.2013