2011-12-19 32 views
1

我的自定義NAnt任務依賴於某個文件集。它被認爲是由任務執行的時間來定義的。我想確保文件集在使用之前已被定義。我正在考慮類似於property::exists('property')如何檢測是否定義了文件集?

我找不到合適的功能。 開箱即可使用NAnt(或NAntContrib)嗎?

+0

一般來說,任務不應該「依靠」的文件集/性能,但需要明確的參數。該文件集不需要重新聲明,因爲它可以通過簡單的refid引用來包含。 – skolima 2011-12-19 10:34:45

+0

不知道我是否正確理解你。我使用refid引用文件集,但如果文件集未在某處定義,它將使用「未定義」錯誤進行拍攝。 – 2011-12-19 11:42:33

+0

順便說一句,我試圖通過文件集作爲參數有問題 - 看起來NAnt不能將它擴展回任務中的文件集,將其視爲字符串文字。它是否已知?或者我只是陷入所有新手都陷入的漏洞之中? :) – 2011-12-19 11:44:00

回答

1

通常,任務不應該依賴於文件集或屬性。相反,他們應該採取明確的參數。現有的文件集可以使用refid重用,所以不會因此而導致重新聲明。例如語法:

<myTask><filesetParameter refid="compileUs"/><myTask> 

如果沒有定義所引用的文件集,南特將拋出一個異常 - 這是正確的(預期)的行爲,作爲構建不能繼續在這一點上。

裏面你的任務,屬性將被定義如下:

[TaskName("myTask")] 
public class MyTask : Task 
{ 
    [TaskAttribute("filesetParameter", Required = true)] 
    public FileSet FilesetParamter 
    { get; set; } 
} 
+0

再次感謝!這很有幫助。 – 2011-12-19 14:49:43

相關問題