推荐一个基于C#开发的跨平台构建自动化系统!

推荐一个开源的跨平台构建自动化系统,对于C# 程序员来说,使用熟悉的 C# 语法来编写构建脚本,而不需要学习新的脚本语言。

01 项目简介

Cake 是一个构建自动化工具,它使用 C# 编写的领域特定语言(DSL)来定义构建任务。

它可以完成诸如编译代码、复制文件/文件夹、运行单元测试、压缩文件以及构建 NuGet 包等任务。

02 主要特性

1、基于 C# 的 DSL:使用 C# 编写构建脚本,支持完整的 C# 语言特性。

2、跨平台支持:可在 Windows、Linux 和 macOS 上运行。

3、丰富的工具集成:支持 MSBuild、dotnet CLI、NuGet、NUnit、xUnit、MSTest 等。

4:、支持 Docker、Azure、AWS 等云服务

5、与 CI/CD 系统集成:支持 Azure DevOps、Jenkins、GitHub Actions 等。

03 简单示例

复制代码
// 获取命令行参数"target",如果没有提供则默认为"Test"
// 运行时可指定:--target=Clean 或其他任务名
var target = Argument("target", "Test");

// 获取命令行参数"configuration",如果没有提供则默认为"Release"
// 运行时可指定:--configuration=Debug
var configuration = Argument("configuration", "Release");

//
// TASKS - 定义构建任务
//

// 定义名为"Clean"的任务
Task("Clean")
    // 设置执行条件:只有当命令行有"rebuild"参数时才执行
    // 运行时可指定:--rebuild
    .WithCriteria(c => HasArgument("rebuild"))
    .Does(() =>
{
    // 清除指定配置的输出目录
    CleanDirectory($"./src/Example/bin/{configuration}");
});

// 定义名为"Build"的任务
Task("Build")
    // 设置任务依赖:执行Build前必须先执行Clean任务
    .IsDependentOn("Clean")
    .Does(() =>
{
    // 使用DotNetBuild命令构建解决方案
    DotNetBuild("./src/Example.sln", new DotNetBuildSettings
    {
        Configuration = configuration, // 使用指定的配置(Release/Debug)
    });
});

// 定义名为"Test"的任务
Task("Test")
    // 设置任务依赖:执行Test前必须先执行Build任务
    .IsDependentOn("Build")
    .Does(() =>
{
    // 使用DotNetTest命令运行测试
    DotNetTest("./src/Example.sln", new DotNetTestSettings
    {
        Configuration = configuration, // 使用指定的配置
        NoBuild = true, // 不重新构建,因为Build任务已经完成了构建
    });
});

//
// EXECUTION - 执行目标任务
//

// 运行指定的目标任务(默认为Test)
// 这将按依赖关系依次执行:Clean(如果有rebuild参数)->Build->Test
RunTarget(target);

04 项目地址

https://github.com/cake-build/cake

  • End -

推荐阅读

C#实现Stdio通信方式的MCP Server

C#实现SSE通信方式的MCP Server

C#实现MCP Client 与 LLM 连接,抓取网页内容功能!

VS Code + Cline + 魔搭MCP Server 实现抓取网页内容。

C#实现自己的MCP Client

相关推荐
YuanlongWang4 分钟前
C# 基础——多态的实现方式
java·c#
夜幽青玄7 分钟前
mybatis-plus调用报 org.springframework.dao.DataIntegrityViolationException 错误处理
开发语言·python·mybatis
洲覆8 分钟前
Redis 内存淘汰策略
开发语言·数据库·redis·缓存
CodeCraft Studio23 分钟前
PDF处理控件Aspose.PDF教程:在C#中将PDF转换为Base64
服务器·pdf·c#·.net·aspose·aspose.pdf·pdf转base64
偶尔贪玩的骑士27 分钟前
Kioptrix Level 1渗透测试
linux·开发语言·网络安全·php
それども38 分钟前
忽略Lombok构建警告
java·开发语言·jvm
qiuiuiu4131 小时前
正点原子RK3568学习日志12-注册字符设备
linux·开发语言·单片机·学习·ubuntu
liu****1 小时前
20.哈希
开发语言·数据结构·c++·算法·哈希算法
MetaverseMan1 小时前
Java Spring 框架的`@Autowired` 注解 以及依赖注入分析
java·开发语言·spring
迎風吹頭髮1 小时前
Linux服务器编程实践58-getnameinfo函数:通过socket地址获取主机名与服务名
开发语言·数据库·php