2012-02-10 64 views
2

我想使用属性值作为通过<exec/>任务传递给某个EXE的参数的一部分。有一个条件影响了属性的初始化,也就是说,如果条件为真,它应该包含值,否则只是空的(但仍然定义)。是否可以将默认值分配给NAnt属性?

这是我结束了迄今:

<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="" /> 

回答

2

下面的例子应该满足您的需求。它将创建一个名为'SolutionConfiguration'的属性,并且当且仅当相同的参数尚未定义(即通过命令行定义)时,才会为其分配值'Release'。

<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> 
+0

是的,这是接近我需要什么......反正我觉得我应该重新设计我的代码应用更多与NAnt提供的...谢谢! – 2012-02-15 10:39:16

0

使用overwrite="False"

<property name="RootFolder" value="c:\Root\Folder" overwrite="false" /> 
相关问题