gpt4 book ai didi

cakebuild - 我可以在我的 Cake 构建脚本中获得对当前 `ICakeContext` 的引用吗?

转载 作者:行者123 更新时间:2023-12-03 16:43:18 26 4
gpt4 key购买 nike

我正在重构 Cake 构建脚本,并决定引入一个类来保存一些经常传递和/或存在于全局范围内的build设置。

一些设置来自参数,并使用 Argument<T>(string name, string defaultValue) 设置句法。

我想创建这样的东西:

var context = BuildContext.FromArguments();

为此,我需要获取当前 ICakeContext 的一个实例。我认为这样做的原因是蛋糕脚本中定义的所有方法都变成了定制 ICakeContext 的方法。可能继承自 CakeContext因此可以调用它的所有(扩展)方法,但是一旦你定义了一个类,它就会变成一个嵌套类,不再能够访问像 Argument<T>(name, defaultValue) 这样的好 helper 。 .

我希望我可以做 ICakeContext.Current或者直接通过 thisBuildContext.FromArguments(this)或类似的东西。

但是关键字 this不允许在 Cake 脚本的那个级别(不知道为什么,顶级是静态方法?

所以,问题是:我如何获得对当前 ICakeContext 的引用?

最佳答案

原因this不行,是因为Roslyn实现脚本的方式,没有this的概念在脚本的外部范围内。

您可以通过几种不同的方式访问上下文。

来自 Task :

Task("MyTask")
.Does(ctx =>
{
BuildContext.FromArguments(ctx);
});

来自 Setup/Teardown :
Setup(ctx =>
{
BuildContext.FromArguments(ctx);
});

Teardown(ctx =>
{
BuildContext.FromArguments(ctx);
});

来自 TaskSetup/TaskTeardown :
TaskSetup(ctx =>
{
BuildContext.FromArguments(ctx);
});

TaskTeardown(ctx =>
{
BuildContext.FromArguments(ctx);
});

从外部脚本范围:
#load "somefile.csx"

BuildContext.FromArguments(Context);

关于cakebuild - 我可以在我的 Cake 构建脚本中获得对当前 `ICakeContext` 的引用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47968448/

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