Cake 4.0.0 版本更新概述
Cake 是一个开源的 .NET 构建自动化系统,使用完整的 C# DSL(领域特定语言)。2023 年 11 月 18 日,Cake 更新至 4.0.0 版本,与 .NET 8 的发布同步。新版本完全支持最新的 .NET 运行时。除了出于安全原因进行的依赖项更新外,仅添加了两个次要功能。
新功能
- 解压缩操作支持覆盖现有目标文件
这一功能与 .NET 标准 ZIP 操作中覆盖标志的可见性更新保持一致。 - 文件时间戳操作
现在可以在 Cake 脚本中操作文件时间戳,例如更改文件创建时间或最后访问时间。
Cake 简介
Cake 是一个基于 .NET 原生 Roslyn 编译器的构建系统,其作用类似于 JavaScript 生态系统中的 Gulp runner。它基于任务及任务之间的依赖关系,开发者可以通过传递目标任务来调用 Cake 构建脚本。
Cake 脚本示例
一个简单的 Cake 脚本包含调用不同构建和发布相关库及工具的任务。以下示例脚本运行三个任务:Clean、Build 和 Test,其中 Test 是默认任务。
var target = Argument("target", "Test");
var configuration = Argument("configuration", "Release");
Task("Clean")
.WithCriteria(c => HasArgument("rebuild"))
.Does(() =>
{
CleanDirectory($"./src/Example/bin/{configuration}");
});
Task("Build")
.IsDependentOn("Clean")
.Does(() =>
{
DotNetBuild("./src/Example.sln", new DotNetBuildSettings
{
Configuration = configuration,
});
});
Task("Test")
.IsDependentOn("Build")
.Does(() =>
{
DotNetTest("./src/Example.sln", new DotNetTestSettings
{
Configuration = configuration,
NoBuild = true,
});
});
RunTarget(target);执行此脚本(通过命令行输入 dotnet cake)将运行 Test 任务。由于任务间的依赖关系,执行顺序为 Clean、Build 和 Test。CleanDirectory、DotNetBuild 和 DotNetTest 是调用原生 .NET 工具进行清理、构建和运行测试的方法。
使用 Cake 的优势
Reddit 用户 'devlead' 总结了使用 Cake 的优势:
- 可重复性:如果构建和发布过程包含多个步骤,Cake 可以以可重复的方式在完整的编程语言(C#)中声明这些步骤。
- 跨平台和环境:Cake 可以在 Linux、MacOS 和 Windows 上运行,无论是本地环境还是构建/发布服务器。
- 本地测试和调试:使用 C# 编写的脚本可以在本地测试和调试,反馈循环更快,避免了使用 YAML 文件时提交到 Git 并等待 CI 启动的延迟。
- 利用现有技能:对于 .NET 团队,使用 C# 可以利用现有技能,处理条件语句和字符串等操作比声明性语言(如 YAML)更简单。
- 一致性/可移植性:Cake 在不同供应商/服务之间保持一致和可移植,而 YAML 没有标准。
Cake 的开源与流行度
Cake 作为开源项目发布在 GitHub 上,拥有超过 200 名贡献者。根据 NuGet 包管理器的统计数据,新版本的每日下载量超过 35,000 次,使 Cake 成为最受欢迎的 .NET 库之一。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。