gpt4 book ai didi

c# - 如何在 Cake 任务的 `WithCriteria` 中使用全局变量?

转载 作者:行者123 更新时间:2023-11-30 16:47:56 25 4
gpt4 key购买 nike

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

enter image description here

如您所见,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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com