如何在 Cake Tasks 的“WithCriteria”中使用全局变量?
How can I utilize global variables within the `WithCriteria` of my Cake Tasks?
我有许多任务使用 WithCriteria 来指定该任务何时应该 运行。该标准在 Cake 脚本的主要 Setup
方法中建立。但是,在执行脚本时,我得到一个空引用异常...
如您所见,路径 属性 为空,即使在我的 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(()=>
{
});
我有许多任务使用 WithCriteria 来指定该任务何时应该 运行。该标准在 Cake 脚本的主要 Setup
方法中建立。但是,在执行脚本时,我得到一个空引用异常...
如您所见,路径 属性 为空,即使在我的 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(()=>
{
});