如何解决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 举报,一经查实,本站将立刻删除。