2010-07-20 6 views
31

Mam ten kod MSBuild:Czy istnieje zadanie MSBuild, aby sprawdzić, czy ciąg zawiera inny ciąg (podobny do string.contains)

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

ale zastanawiałem się, czy jest tam coś podobnego, aby sprawdzić, czy ciąg znaków zawiera jakiś tekst, aby uzyskać coś podobnego do:

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

Odpowiedz

13

MSBuild4: Jak powiedział Julien, w MSBuild 4 możliwe jest funkcja użytkownika obiektu.

MSBuild 3.x: W poprzednich wersjach jest to możliwe w przypadku korzystania Tigris MsBuild Tasks

Można użyć zadanie REGEXMATCH i użyć wyrażenia regularnego

-3

msbuild Conditions reference nie ma nic o możliwości wystąpienia „zawiera” funkcji. Wygląda na to, że twoja pierwsza wersja jest jedyną opcją.

+0

Jak inni zwrócili uwagę, MSBuild 4 nie dodaj nową składnię warunku, ale pozwala używać funkcji właściwości (http://blogs.msdn.com/b/msbuild/archive/2010/04/02/msbuild-property-functions.aspx). – BCran

67

Jeśli używasz MSBuild 4, można użyć Property function

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

(More info on Property function)