我有许多任务使用 WithCriteria 来指定何时运行该任务。Setup
该标准是在Cake 脚本的 main 方法中建立的。但是,在执行脚本时,我得到一个空引用异常......
如您所见,Paths 属性为空,即使在我的Setup
方法中我设置了该属性。
为什么是这样?
如何在我的 ? 中使用全局变量WithCriteria
?
您遇到的问题是因为WithCriteria
在执行任务之前对您使用的条件进行了评估。
一般来说,在执行任务之前创建常量/状态就可以了。
WithWithCriteria
有两个重载,您在上面使用的那个
public static CakeTaskBuilder<T> WithCriteria(
this CakeTaskBuilder<T> builder,
bool criteria
)
因为它bool
被评估为创建的任务,如果在设置或以前的任务期间创建和更改状态,这将不起作用,为了解决此更改,您编写代码以使用以下重载
public static CakeTaskBuilder<T> WithCriteria(
this CakeTaskBuilder<T> builder,
Func<bool> criteria
)
这种过载采用Func<bool>
在任务执行之前评估的标准,因此可以访问在任务执行之前创建或修改的任何状态。
因此,解决您的问题的方法只是()=>
在您的条件之前添加,它会像这样延迟加载:
Task("Test-NUnit")
.WithCriteria(()=>DirectoryExists(parameters.Paths.Directories.NUnitTestResults))
.Does(()=>
{
});