如何在我的Cake任务的`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(()=>
{
});
感谢,工程完全按照说明! –