3

我有许多任务使用 WithCriteria 来指定何时运行该任务。Setup该标准是在Cake 脚本的 main 方法中建立的。但是,在执行脚本时,我得到一个空引用异常......

在此处输入图像描述

如您所见,Paths 属性为空,即使在我的Setup方法中我设置了该属性。

为什么是这样?

如何在我的 ? 中使用全局变量WithCriteria

4

1 回答 1

2

您遇到的问题是因为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(()=>
{
});
于 2016-08-04T08:58:25.167 回答