参数值中的 msbuild 任务条件运算符

Posted

技术标签:

【中文标题】参数值中的 msbuild 任务条件运算符【英文标题】:msbuild task conditional operators in parameter value 【发布时间】:2021-12-05 02:06:47 【问题描述】:

在调用MSBuild任务时,有什么方法可以使用条件变量作为参数吗?

例如,如果我们在 MySampleTask msbuild 任务中将文本作为字符串参数:

<MySampleTask text="if a not empty ? a : b" />

如果我们可能有 2 个本地字符串变量 a 和 b,如何传递文本字符串变量?如何实现上述代码中的行为?

【问题讨论】:

【参考方案1】:

我不知道这样的运算符,但你想要的相当于

<MySampleTask text="$(a)" Condition="'$(a)' != ''" />
<MySampleTask text="$(b)" Condition="'$(a)' == ''" />

或者,同样的原则,但首先应用于属性;可能是最“标准”的方式:

<PropertyGroup>
  <a Condition="'$(a)' == ''">$(b)</a>
</PropertyGroup>

<MySampleTask text="$(a)" />

【讨论】:

以上是关于参数值中的 msbuild 任务条件运算符的主要内容,如果未能解决你的问题,请参考以下文章

将 IF 条件与存储在变量中的比较运算符一起使用

Java学习笔记2.3.6 运算符与表达式 - 条件运算符

C条件运算符('?'),第二个参数为空[重复]

C#中如何判断字符串中包含某个字符?

条件运算符从其参数的副本返回值

三元条件运算符中的多个条件?