2012-05-28 2 views
10

Я настраиваю некоторые конфигурации в своих файлах csproj, которые будут нацелены на разные версии фреймворка. В идеале мне нужны конфигурации «Debug - 3.5», «Debug - 4.0», «Release - 3.5» и «Release - 4.0».C# Проверка того, что свойство «Начинается/заканчивается с» в csproj

В моем файле csproj я хочу сделать что-то вроде следующего:

<PropertyGroup Condition=" '${Configuration}' ends with '3.5' "> 
    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> 
</PropertyGroup 
<PropertyGroup Condition=" '${Configuration}' ends with '4.0' "> 
    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> 
</PropertyGroup 
... check for "starts with Debug" to define Optimize etc. 

Однако, я не знаю, как идти о проверке, что ${Configuration} начинается/заканчивается определенной строкой. Есть простой способ сделать это?

Edit: Отмеченный ответ ниже указал мне в правильном направлении, что привело меня пойти с:

<PropertyGroup Condition="$(Configuration.Contains('Debug'))"> 
    ... setup pdb, optimize etc. 
</PropertyGroup> 
<PropertyGroup Condition="$(Configuration.Contains('3.5'))"> 
    ... set target framework to 3.5 
</PropertyGroup> 
... and so on for Release and 4.0 variations 
+0

меткой это [MSBuild] для вас, csproj файл только файл MSBuild и дополнительный тег может получить некоторые экспертные MSBuild внимание. – Jamiec

+0

Возможный дубликат [Есть ли какая-либо задача MSbuild, чтобы проверить, содержит ли строка другую строку (аналогично string.contains)] (http://stackoverflow.com/questions/3289538/is-there-any-msbuild-task-to -check-if-a-string-contains-another-string-like) –

ответ

22

Свойство MSBuild это просто .NET Строка и имеет property functions доступны.

Condition="$(Configuration.EndsWith('3.5'))" 

Должно работать

+2

Вы на правильном пути, но System.String не имеет метода с именем Right. –

+3

System.String.EndsWith() вероятнее всего, что вам нужно. – bojolais

+1

Lol конечно - было 1:30, когда я написал это - спасибо! –