我有许多任务使用 WithCriteria 来指定何时应该运行该任务。该标准在 Cake 脚本的主要 Setup
方法中建立。但是,在执行脚本时,我得到一个空引用异常...
如您所见,Paths 属性为 null,即使在我的 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>
在任务执行之前评估的条件,因此可以访问在任务执行之前创建或修改的任何状态。
因此,您的问题的解决方法是添加 ()=>
在你的标准之前,它会像这样延迟加载:
Task("Test-NUnit")
.WithCriteria(()=>DirectoryExists(parameters.Paths.Directories.NUnitTestResults))
.Does(()=>
{
});
关于c# - 如何在 Cake 任务的 `WithCriteria` 中使用全局变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38761679/