You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写简单的Cake module?寻求最新文档与Hello World示例

极简Cake Module示例(Hello World级)

1. 项目结构

先创建一个.NET类库项目,结构如下:

Cake.HelloWorldModule/
├── Cake.HelloWorldModule.csproj
├── HelloWorldModule.cs
└── Properties/
    └── AssemblyInfo.cs

2. 项目配置

在Cake.HelloWorldModule.csproj里添加Cake.Core的引用,用最新稳定版即可:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <AssemblyName>Cake.HelloWorldModule</AssemblyName>
    <PackageId>Cake.HelloWorldModule</PackageId>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Cake.Core" Version="3.1.0" />
  </ItemGroup>
</Project>

3. 核心Module代码

这部分是Module的核心,实现IModule接口来注册自定义服务,再扩展Cake脚本可调用的方法:

using Cake.Core;
using Cake.Core.Annotations;
using Cake.Core.Composition;

// 实现Cake的IModule接口,这是模块的入口
public class HelloWorldModule : IModule
{
    public void Register(ICakeContainerRegistrar registrar)
    {
        // 注册自定义服务,这里用单例模式
        registrar.RegisterType<HelloWorldProvider>().AsSelf().Singleton();
    }
}

// 自定义服务类,封装业务逻辑
public class HelloWorldProvider
{
    private readonly ICakeContext _context;

    public HelloWorldProvider(ICakeContext context)
    {
        _context = context;
    }

    public void SayHello()
    {
        // 调用Cake的日志输出
        _context.Log.Information("Hello from custom Cake Module!");
    }
}

// 给Cake脚本添加可直接调用的扩展方法
[CakeAliasCategory("HelloWorld")]
public static class HelloWorldAliases
{
    [CakeMethodAlias]
    public static void HelloWorld(this ICakeContext context)
    {
        // 从Cake的服务容器中获取自定义服务实例
        var provider = context.Services.GetService<HelloWorldProvider>();
        provider.SayHello();
    }
}

4. 打包与使用

  • 编译项目,把生成的Cake.HelloWorldModule.dll放到Cake项目的./tools/Modules/目录下(没有就新建)
  • 在你的Cake脚本(比如build.cake)里调用自定义方法:
Task("Hello")
    .Does(() =>
{
    HelloWorld();
});

RunTarget("Hello");

运行Cake脚本后,就能看到日志输出Hello from custom Cake Module!


关于文档:目前Cake官方的Module文档确实不够详尽,不过你可以查看Cake核心源码里IModule和ICakeContainerRegistrar的注释,能快速理解模块的核心逻辑——本质就是通过依赖注入容器注册自定义服务、扩展方法,以此扩展Cake的功能。另外,也可以关注Cake官方仓库的docs目录,偶尔会有更新补充。

内容的提问来源于stack exchange,提问作者lonix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 09:18:29