Cake Clean 任务在蛋糕构建时被跳过
Cake Clean task is skipped on cake build
B运行d-新 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
任务是用 criteria 定义的,看看这一行:
.WithCriteria(c => HasArgument("rebuild"))
这意味着只有在指定条件的情况下,任务才会运行。条件是 HasArgument("rebuild")
,它试图在指定的其他参数中找到名为 rebuild
的参数。
如果您 运行 您的脚本是这样的,Clean 目标将 运行:
dotnet cake --rebuild
报错信息很清楚:
Could not reach target 'Clean' since it was skipped due to a criteria
查看您的 Clean
目标,它有一个标准期望:
Task("Clean")
.WithCriteria(c => HasArgument("rebuild")) // <<#<<#<<#<<#<<#<<#####
.Does(() => { ... });
这意味着您的 Clean
条件只有在您提供参数 --rebuild
:
时才会 运行
dotnet cake --target="Clean" --verbosity=normal --rebuild
B运行d-新 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
任务是用 criteria 定义的,看看这一行:
.WithCriteria(c => HasArgument("rebuild"))
这意味着只有在指定条件的情况下,任务才会运行。条件是 HasArgument("rebuild")
,它试图在指定的其他参数中找到名为 rebuild
的参数。
如果您 运行 您的脚本是这样的,Clean 目标将 运行:
dotnet cake --rebuild
报错信息很清楚:
Could not reach target 'Clean' since it was skipped due to a criteria
查看您的 Clean
目标,它有一个标准期望:
Task("Clean")
.WithCriteria(c => HasArgument("rebuild")) // <<#<<#<<#<<#<<#<<#####
.Does(() => { ... });
这意味着您的 Clean
条件只有在您提供参数 --rebuild
:
dotnet cake --target="Clean" --verbosity=normal --rebuild