如果 属性 不为 null 或为空,则在 NAnt 可执行文件调用中包含参数
Include argument in NAnt executable call if property is not null or empty
对于构建脚本,我的部分过程是使用内部可执行文件部署文件。我们用一些参数调用它。
在我正在处理的应用程序中,我们需要添加一个参数。这不是追溯适用于我之前所做的任何其他事情的东西,所以我的想法是,如果相应的 属性 不为空或空,我只会包含新参数。
相关 NAnt 调用:
<property name="deploy.NewArg" value="" />
<echo message="deploy.NewArg = ${deploy.NewArg}" />
<exec program="C:\Deploy\MyAwesomeDeployProgram.exe">
<arg value="AppTitle=${deploy.AppTitle}" />
<arg value="Environment=${deploy.Environment}" />
<!-- Here's the problem argument... -->
<arg value="MyNewProperty=${deploy.NewArg}" if="${deploy.NewArg}" />
</exec>
我所拥有的不起作用的原因是因为新 <arg>
标记上的 if
子句 - deploy.NewArg
字符串不会转换为布尔语句。
问题: 我可以用什么方式对 <arg if>
参数执行 "Is Null or Empty" 检查?如上所述,如果 deploy.NewArg
什么都不是或空字符串,我希望添加 MyNewProperty=...
参数。
我检查了其他一些 Whosebug 问题以及 official NAnt arg tag documentation,但找不到如何做到这一点。
事实证明,我需要回到基础,并检查我的一些基础知识和功能。对 属性 进行 'is empty' 检查的方法如下:
<exec program="C:\Deploy\MyAwesomeDeployProgram.exe">
<!-- Other args... -->
<arg value="MyNewProperty=${deploy.NewArg}" if=${string::get-length(deploy.NewArg) > 0}" />
</exec>
对于尚未进行研究的人来说,if
仅适用于布尔值。也就是说,可以通过以下两种方式之一生成布尔值:显式 true
或 false
,或者使用表达式。表达式始终包含在 ${}
括号中。 string::get-length()
的使用应该是显而易见的。
将它们放在一起,如果指定了参数,则只包含一个参数。
对于构建脚本,我的部分过程是使用内部可执行文件部署文件。我们用一些参数调用它。
在我正在处理的应用程序中,我们需要添加一个参数。这不是追溯适用于我之前所做的任何其他事情的东西,所以我的想法是,如果相应的 属性 不为空或空,我只会包含新参数。
相关 NAnt 调用:
<property name="deploy.NewArg" value="" />
<echo message="deploy.NewArg = ${deploy.NewArg}" />
<exec program="C:\Deploy\MyAwesomeDeployProgram.exe">
<arg value="AppTitle=${deploy.AppTitle}" />
<arg value="Environment=${deploy.Environment}" />
<!-- Here's the problem argument... -->
<arg value="MyNewProperty=${deploy.NewArg}" if="${deploy.NewArg}" />
</exec>
我所拥有的不起作用的原因是因为新 <arg>
标记上的 if
子句 - deploy.NewArg
字符串不会转换为布尔语句。
问题: 我可以用什么方式对 <arg if>
参数执行 "Is Null or Empty" 检查?如上所述,如果 deploy.NewArg
什么都不是或空字符串,我希望添加 MyNewProperty=...
参数。
我检查了其他一些 Whosebug 问题以及 official NAnt arg tag documentation,但找不到如何做到这一点。
事实证明,我需要回到基础,并检查我的一些基础知识和功能。对 属性 进行 'is empty' 检查的方法如下:
<exec program="C:\Deploy\MyAwesomeDeployProgram.exe">
<!-- Other args... -->
<arg value="MyNewProperty=${deploy.NewArg}" if=${string::get-length(deploy.NewArg) > 0}" />
</exec>
对于尚未进行研究的人来说,if
仅适用于布尔值。也就是说,可以通过以下两种方式之一生成布尔值:显式 true
或 false
,或者使用表达式。表达式始终包含在 ${}
括号中。 string::get-length()
的使用应该是显而易见的。
将它们放在一起,如果指定了参数,则只包含一个参数。