3
我有一些任務使用WithCriteria來指定何時應該運行該任務。該標準在Cake腳本的主要Setup
方法中建立。然而,在執行腳本時,我得到一個空引用異常......如何在我的Cake任務的`WithCriteria`中使用全局變量?
正如你看到的,路徑屬性爲空,即使我Setup
方法中,我設置該屬性。
這是爲什麼?
如何在我的WithCriteria
內使用全局變量?
我有一些任務使用WithCriteria來指定何時應該運行該任務。該標準在Cake腳本的主要Setup
方法中建立。然而,在執行腳本時,我得到一個空引用異常......如何在我的Cake任務的`WithCriteria`中使用全局變量?
正如你看到的,路徑屬性爲空,即使我Setup
方法中,我設置該屬性。
這是爲什麼?
如何在我的WithCriteria
內使用全局變量?
您遇到的問題是因爲使用WithCriteria
重載,您使用的標準在任務執行前被評估。
一般來說,在執行任務之前創建的常量/狀態可以。
隨着WithCriteria
有兩個重載的one你使用上述
public static CakeTaskBuilder<T> WithCriteria(
this CakeTaskBuilder<T> builder,
bool criteria
)
,因爲它需要一個bool
的任務創建它的評估,如果創建&設置或以前期間發生變化狀態,這是行不通的任務,要解決這個改變你的代碼使用below超載
public static CakeTaskBuilder<T> WithCriteria(
this CakeTaskBuilder<T> builder,
Func<bool> criteria
)
這種過度負荷需要Func<bool>
標準Wh是在執行任務之前對其進行評估,因此可以訪問任務執行前創建或修改的任何狀態。
因此,對於你的問題的解決方法是隻需添加()=>
您的標準之前,這將是懶加載這樣的:
Task("Test-NUnit")
.WithCriteria(()=>DirectoryExists(parameters.Paths.Directories.NUnitTestResults))
.Does(()=>
{
});
感謝,工程完全按照說明! –