CakeClean任务在蛋糕构建时被跳过

全新的 Cake 项目,build.cake如Setting Up A New Project 中所写,已添加到net5.0控制台应用程序中。

运行时dotnet cake,运行程序会悄悄跳过 Clean 任务。

我跑了dotnet cake --target="Clean" --verbosity=normal,收到了这个:

Error: One or more errors occurred. (Could not reach target 'Clean' since it was skipped due to a criteria.)

不知道跳过任务的标准是什么。

我的build.cake

var target = Argument("target", "Test");
var configuration = Argument("configuration", "Release");

///////////////////////////////////////////////////////////
// TASKS
//////////////////////////////////////////////////////////

Task("Clean")
.WithCriteria(c => HasArgument("rebuild"))
.Does(() => 
{
    CleanDirectory($"./LucroMei/bin/{configuration}");
});

Task("Build")
.IsDependentOn("Clean")
.Does(() => 
{
    DotNetCoreBuild("./LucroMei.sln", new DotNetCoreBuildSettings
    {
        Configuration = configuration,
    });
});

Task("Test")
.IsDependentOn("Build")
.Does(() => 
{
    DotNetCoreTest("./LucroMei.sln", new DotNetCoreTestSettings
    {
        Configuration = configuration,
        NoBuild = true,
    });
});

///////////////////////////////////////////////////////////
// EXECUTION
//////////////////////////////////////////////////////////

RunTarget(target);

回答

Clean脚本中的任务是用标准定义的,看看这一行:

.WithCriteria(c => HasArgument("rebuild"))

这意味着只有在指定条件的情况下,任务才会运行。条件是HasArgument("rebuild"),它试图rebuild在指定的其他参数中找到命名的参数。

如果您像这样运行脚本,则 Clean 目标将运行:

dotnet cake --rebuild


以上是CakeClean任务在蛋糕构建时被跳过的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>