我想将属性值用作通过<exec/>
任务传递给某个EXE的参数的一部分。有一个条件影响属性初始化,也就是说,如果条件为真,它应该包含值,否则只是空(但仍然定义)。
这是我到目前为止的结果:
<property name="prop1" value="" />
<property name="prop1" value="some-value-based-on-condition" if="condition-goes-here" />
后来:
<exec program="my.exe">
<arg value="C:\Root\Folder\${prop1}" />
...
</exec>
如果未设置属性,我只想传递C:\Root\Folder\
作为参数值。
以这种方式初始化属性对于这样一个简单的操作来说似乎太多了。有没有办法使用NAnt中的内容更简单?我想象的是:
<property name="prop1" value="somevalue-based-on-condition" if="condition" default="" />
答案 0 :(得分:2)
以下示例应满足您的需求。它将创建一个名为“SolutionConfiguration”的属性,并且当且仅当尚未定义相同的参数时(即,它是通过命令行定义的),才为其分配值“。”
<property name="SolutionConfiguration" value="Release" unless="${property::exists('SolutionConfiguration')}" />
对于您的方案,请尝试
<property name="RootFolder" value="c:\Root\Folder" unless="${property::exists('RootFolder')}" />
<exec program="my.exe">
<arg value="${RootFolder}\${prop1}" />
...
</exec>
答案 1 :(得分:0)
使用overwrite="False"
<property name="RootFolder" value="c:\Root\Folder" overwrite="false" />