Blogs
📆 2025-12-22 17:00

概述

贡献指南将详细介绍和说明工具内部实现的设计思路、实现原理、开发指南等等内容,让开发者能够更深入的理解和参与到 Perigon 的开发中。

项目结构

Perigon 项目主要包含以下几个部分:

  • scripts:包含一些脚本文件,用于辅助开发和部署。
  • src: 包含主要的源代码文件。
    • Command/CommandLine: 命令行工具实现。
    • Definition:定义层
      • CodeGenerator: 核心代码生成逻辑
      • EfCoreContext: EntityFramework Core相关定义
      • Entity: 实体定义
      • Share: 共享的帮助类和生成服务等
    • Modules/StudioMod: Studio业务逻辑实现模块。
    • Services/AterStudio: AspNetCore应用,提供Studio WebUI管理界面和MCP服务.

命令行工具

基于Spectre.Console.Cli实现。在CommandLine项目中实现,通过调用CommandService来调用具体的逻辑。

Studio管理界面

AterStudio项目是基于Blazor Server实现的Web应用,在AterStudio/Components目录下包含了各个组件的实现。

组件中将通过调用Modules/StudioMod模块中的Manager来实现具体的业务逻辑。

内置代码生成

代码生成主要依赖Roslyn实现,核心代码在Definition/CodeGenerator目录下。

解析实体

目前有两种方式对实体进行解析,一是通过Roslyn对实体类进行静态解析。

另一种是通过EntityFrameworkCore.Design对数据库上下文进行建模,获取相关的信息。

通过EntityFrameworkCore.Design能够获取到更多的实体信息,包括实体的关系、属性等,这对于生成代码和前端请求非常有帮助。

关于注释,会通过XmlDocHelper来提取文档注释信息。

OpenApi解析

通过Microsoft.OpenApi对OpenApi规范进行解析,获取相关的API信息。

不同类型客户端的请求服务生成,通过继承ClientRequestBase抽象类来实现,各语言的类型解析通过继承LanguageFormatterBase来实现。

运行与测试

最简单和直观的方式,是直接运行AterStudio项目,它将启动Web应用,提供Studio的管理界面。

如果是CommandLine项目,直接使用dotnet run命令,携带参数即可。