2012-02-10 160 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" /> 
相關問題