Cake.Console 3.0.0.2

dotnet add package Cake.Console --version 3.0.0.2                
NuGet\Install-Package Cake.Console -Version 3.0.0.2                
此命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用 NuGet 模块的Install-Package 版本。
<PackageReference Include="Cake.Console" Version="3.0.0.2" />                
对于支持 PackageReference 的项目,将此 XML 节点复制到项目文件中以引用此包。
paket add Cake.Console --version 3.0.0.2                
#r "nuget: Cake.Console, 3.0.0.2"                
#r 指令可用于 F# Interactive 和 Polyglot Notebooks。将此内容复制到交互式工具或脚本的源代码中,以引用此包。
// Install Cake.Console as a Cake Addin
#addin nuget:?package=Cake.Console&version=3.0.0.2

// Install Cake.Console as a Cake Tool
#tool nuget:?package=Cake.Console&version=3.0.0.2                

Cake.Console Nuget

适用于 Cake scripts 的脚本,但在控制台应用程序中。

Cake.Frosting 的替代方案

https://blog.pitermarx.com/2021/09/presenting-cake-console/

用法

创建一个新的项目,并引用 Cake.Console。它看起来可能如下所示

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <OutputType>exe</OutputType>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Cake.Console" Version="3.0.0" />
  </ItemGroup>
</Project>

添加包含代码的单个 Program.cs 文件。利用 顶级语句

使用 Cake.Console 有两种方式

  1. 构建 IScriptHost。这是 .cake 脚本中的隐含对象,因此我们可以使用它来注册任务、执行设置等。
var host = new CakeHostBuilder().BuildHost(args);

host.Setup(() => { do something });
host.Task("TaskName").Does(c => c.Information("Hello"));
host.RunTarget(host.Context.Arguments.GetArgument("target"));
  1. 使用 Cake Cli,它包括 --target、--version、--info、--tree、--description、--exclusive 等参数。它与 frosting 非常相似。
new CakeHostBuilder()
    .WorkingDirectory<WorkingDirectory>()
    .ContextData<BuildData>()
    .RegisterTasks<CakeTasks>()
    .InstallNugetTool("NuGet.CommandLine", "5.9.1")
    .InstallDotnetTool("GitVersion.Tool", "5.7.0")
    .RunCakeCli(args);

在这种情况下,我们无法访问宿主,因此需要使用 Cake.Console 的 4 个扩展定义构建

  • WorkingDirectory<>
  • RegisterTasks<>
  • ContextData<>
  • InstallNugetTool

WorkingDirectory<>

这里我们可以使用一个具有接口 IWorkingDirectory 并实现字符串 WorkingDirectory 属性的类的实例。

该类可以在构造函数中接收蛋糕基础设施的任何部分(ICakeContext, ICakeLog, ICakeArguments, ICakeConfiguration...)

RegisterTasks<>

在这里,我们可以使用一个具有ICakeTasks接口的类。

该类可以在构造函数中接收蛋糕基础设施的任何部分(ICakeContext, ICakeLog, ICakeArguments, ICakeConfiguration...)

所有签名为void Name(CakeTaskBuilder builder)的方法都将被调用,并且方法的名称就是任务的名称。

ContextData<>

在这里,我们可以使用任何类,然后这些类就可以在任务定义中使用。

InstallNugetTool/InstallDotnetTool

给定一个包名和版本,安装nuget包或dotnet工具作为Cake工具

摘要

综合上述内容

using Cake.Common.Diagnostics;
using Cake.Console;
using Cake.Core;

new CakeHostBuilder()
    .WorkingDirectory<WorkingDir>()
    .ContextData<ContextData>()
    .RegisterTasks<CakeTasks>()
    .InstallNugetTool("xunit.runner.console", "2.4.1")
    .RunCakeCli(args);

record WorkingDir(string WorkingDirectory = ".") : IWorkingDirectory;

class ContextData
{
    public string SomeVeryImportantData { get; set; } = "Cake is awesome!";
    public ContextData(ICakeArguments args)
    {
        if (args.HasArgument("tone-down"))
        {
            SomeVeryImportantData = "Cake is pretty good...";
        }
    }
}


class CakeTasks : ICakeTasks
{
    private readonly ICakeContext ctx;

    public CakeTasks(ICakeContext ctx) => this.ctx = ctx;

    public void TaskName(CakeTaskBuilder b) => b
        .Description("Some task")
        .Does(() => ctx.Information("Something"));

    public void AnotherTask(CakeTaskBuilder b) => b
        .IsDependentOn(nameof(TaskName))
        .Does<ContextData>(data => ctx.Information(data.SomeVeryImportantData));
}

也可以使用dotnet-script。感谢badsim。请查看./dotnet-script/test.csx中的示例。

dotnet script --isolated-load-context ./dotnet-script/test.csx --target=test
产品 兼容和额外的计算目标框架版本。
.NET net6.0 兼容。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 已计算。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 已计算。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。
兼容的目标框架
包含的目标框架(在包中)
了解更多关于目标框架.NET 标准的信息。

nuget包

此包没有被任何nuget包使用。

GitHub仓库

此包没有被任何热门GitHub仓库使用。

版本 下载 最后更新
3.0.0.2 701 2/20/2023
2.3.0 762 10/14/2022
2.2.0 996 4/18/2022
2.1.0 551 3/13/2022
2.0.0 545 12/2/2021
1.3.0 42,934 10/8/2021
1.2.0.5 409 9/24/2021
1.2.0.4 339 9/20/2021
1.2.0 405 9/9/2021