在csproj中检查属性是否"开始/结束"

Ada*_*ger 18 msbuild

我正在我的csproj文件中设置一些配置,这些配置将针对不同的框架版本.理想情况下,我想要'Debug - 3.5','Debug - 4.0','Release - 3.5'和'Release - 4.0'的配置.

在我的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.
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何检查${Configuration}以特定字符串开头/结尾.是否有捷径可寻?

编辑:下面标记的答案指出我正确的方向,这导致我去:

<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
Run Code Online (Sandbox Code Playgroud)

Pre*_*gha 35

MSBuild属性只是一个.NET String,并且具有可用的属性函数.

Condition="$(Configuration.EndsWith('3.5'))"
Run Code Online (Sandbox Code Playgroud)

应该管用

  • 是的。例如, `&lt;PropertyGroup Condition="$(Configuration.StartsWith('Debug'))"&gt;` 将起作用。 (3认同)
  • 我将在这里冒险并假设“开始”是`Condition="$(Configuration.StartsWith('blah'))",因为这个答案没有涵盖这一点。 (2认同)