在MSBuild中创建具有布尔表达式结果的属性

Rob*_*Rob 8 msbuild maintainability

有没有一种巧妙的方法来创建在MSBuild中使用的"布尔"属性?我可以评估Condition属性中的表达式,但不能评估CreateProperty任务的Value属性.

我想做这样的事情:

<CreateProperty Value="'$(IncludeInBuild)'=='' OR 
    '$([System.Text.RegularExpressions.Regex]::IsMatch($(MSBuildProjectFullPath), 
    $(IncludeInBuild)'=='True'">
    <Output TaskParameter="Value" PropertyName="MatchesInclude" />
</CreateProperty>
Run Code Online (Sandbox Code Playgroud)

给我的不是真或假,而是

''=='' OR '$([System.Text...
Run Code Online (Sandbox Code Playgroud)

我可以评估布尔表达式并使用结果设置属性吗?我现在的解决方法是在条件属性中重复表达式,无论我需要它.

Nic*_*eus 11

如果条件通过,如何使用条件创建默认属性'false'如何赋值为​​true?

<PropertyGroup>
    <MatchesInclude>false</MatchesInclude>
    <MatchesInclude Condition="'$(IncludeInBuild)'=='' OR 
    '$([System.Text.RegularExpressions.Regex]::IsMatch($(MSBuildProjectFullPath), 
    $(IncludeInBuild)'=='True'">true</MatchesInclude>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

  • @TomWest 只需将其转换为 `$([System.Convert]::ToBoolean(false))` 和 `$([System.Convert]::ToBoolean(true))` (2认同)