微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Cake Clean 任务在蛋糕构建时被跳过

如何解决Cake Clean 任务在蛋糕构建时被跳过

全新的 Cake 项目,Setting Up A New Project 中编写的 build.cake,已添加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 任务是用 criteria 定义的,看看这一行:

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

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

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

dotnet cake --rebuild
,

错误信息很清楚:

无法达到目标“清洁”,因为它被由于标准而被跳过

看看你的 Clean 目标,它有一个标准期望:

Task("Clean")
.WithCriteria(c => HasArgument("rebuild")) // <<#<<#<<#<<#<<#<<#####
.Does(() => { ... });

这意味着您的 Clean 条件仅在您提供参数 --rebuild 时才会运行:

dotnet cake --target="Clean" --verbosity=normal --rebuild

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。