2009-10-12 11 views
13

Mam następujący kod w moim pliku projektu programu MSBuild:Czy można przeprowadzić rozróżnianie wielkości liter w MSBuild?

<Error Text="Some Text" Condition="'$(StringName)' != 'Test'"/> 

Porównanie ciąg tutaj jest wielkość liter, więc kiedy $(StringName) jest coś takiego jak 'test' warunek nie jest spełniony.

Jak mogę zmienić warunek, aby 'test' również spełniał porównanie? Czy w MSBuild dostępna jest funkcja niezależna od wielkości liter?

+3

są na pewno jej nie działa? jak pamiętam, w warunku msbuild nie ma znaczenia wielkość liter. –

Odpowiedz

-6

Nie, nie ma. Musiałbyś napisać własny.

27

Dan Moseley posiada szczegółowy pogląd na funkcje MSBuild nieruchomości tutaj:

http://blogs.msdn.com/b/visualstudio/archive/2010/04/02/msbuild-property-functions.aspx

Dla przykładu można użyć coś takiego:

<Error Text="Some Text" Condition="'$(StringName.ToUpper())' != 'TEST'"/> 
+0

+1, ponieważ nie tylko podajesz link, ale dajesz prawdziwy przykład. Dodano brakującą wycenę zamykającą, a "Warunek" musi być pisany wielkimi literami. –

12

MSBuild porównań łańcuchowych nie są rozróżniane wielkości liter:

<PropertyGroup> 
    <MyProperty>FOOBAR</MyProperty> 
</PropertyGroup> 

<Message Text="ALL CAPS" Importance="high" Condition="'$(MyProperty)' == 'FOOBAR'" /> 
<Message Text="all lower" Importance="high" Condition="'$(MyProperty)' == 'foobar'" /> 

wyjście wola

ALL CAPS 
all lower 

Jestem całkiem pewien, coś innego się dzieje dziwne w skrypcie.

1

Wykorzystanie MSBuild funkcja nieruchomość ze specjalnym parametrem wykonać bez uwzględniania wielkości liter porównania wyrażenie:

<Error Text="Some Text" Condition="!$(StringName.Equals('Test', StringComparison.OrdinalIgnoreCase))"/> 
Powiązane problemy