J. *_*ana 1 .net-core cakebuild
全新的 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);
Run Code Online (Sandbox Code Playgroud)
Clean脚本中的任务是用标准定义的,看看这一行:
.WithCriteria(c => HasArgument("rebuild"))
Run Code Online (Sandbox Code Playgroud)
这意味着只有在指定条件的情况下,任务才会运行。条件是HasArgument("rebuild"),它试图rebuild在指定的其他参数中找到命名的参数。
如果您像这样运行脚本,则 Clean 目标将运行:
dotnet cake --rebuild
Run Code Online (Sandbox Code Playgroud)
错误信息非常明确:
无法达到“清洁”目标,因为它因标准而被跳过
看看你的Clean目标,它有一个标准期望:
Task("Clean")
.WithCriteria(c => HasArgument("rebuild")) // <<#<<#<<#<<#<<#<<#####
.Does(() => { ... });
Run Code Online (Sandbox Code Playgroud)
这意味着Clean只有在您提供参数时您的标准才会运行--rebuild:
dotnet cake --target="Clean" --verbosity=normal --rebuild
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
79 次 |
| 最近记录: |