Blogs
📆 2026-01-10 21:53

常见问题

本文档收集了在使用 Perigon.CLI 过程中可能遇到的常见问题及其解决方案。如果您在使用过程中遇到其他问题,欢迎通过 GitHub 讨论区 提出,我们将持续更新此文档以帮助更多用户。

不支持 ARM 芯片

部分苹果电脑使用 ARM 芯片,当前 Perigon.CLI 暂不支持 ARM 架构。

EF dbcontext 迁移报错

如果执行EFMigrations.ps1没有成功,并提供执行dotnet tool restore,请尝试修改.config/dotnet-tools.json文件中的"version"字段为最新版本,然后重新运行脚本。

OpenAPI 问题

微软提供的官方 OpenAPI 一直不够完善,经历两个大版本后仍然存在诸多问题。

备注:使用 json schema 来表示 openapi 文档,本身存在一定的设计缺陷。

The depth of the generated JSON schema exceeds the JsonSerializerOptions.MaxDepth setting

这个问题通常是由实体间的相互引用导致的,并且它不会与您配置的 JsonOptions 保持一致,也没有提供任何配置项来调整。

这是一个很常见的情况,但官方 OpenAPI 库目前尚未提供理想的解决方案。

例如,实体 User 中定义了多个导航属性,而这些导航属性又引用了 User 实体,就很可能出现此报错。 详细信息可以参考:GitHub Issue

解决方法:

  1. ✅ 推荐:返回时定义新的 DTO,不要直接返回实体。
  2. ⚠️ 不推荐:在关联属性上添加 [JsonIgnore] 属性,避免 JSON 解析时的循环引用。
  3. ⏳ 等待官方库修复。

Tip

建议不要直接返回实体,而是通过定义DTO来返回数据。

不支持 XML 注释

在 .NET 10 中已经添加了对 XML 注释的支持,但存在一些限制。

  1. 您必须在 WebAPI 项目中调用 services.AddOpenApi 来注入服务,因为使用了源代码生成器。这意味着您不能在其他程序集中复用,需要在每个 WebAPI 项目中都添加一遍。

  2. 您必须在 WebAPI 项目中引用 OpenAPI 包依赖,不可在其他程序集中引用,否则可能会报错,或无法正常生成相关的 XML 注释。

生成错误的请求服务

由于请求服务是通过读取 OpenAPI 文档来生成的,而 OpenAPI 可能在某些情况下生成不符合预期的内容,导致生成的请求服务代码有问题。

解决方法:

  1. 到官方仓库提交 Issue,等待修复。

Important

模板本身使用 Swashbuckle.AspNetCore 来生成 OpenAPI 文档,并提供了一些扩展功能来增强生成的文档质量,能够更好地支持代码生成器的使用。

不使用 Aspire

如果您只有一两个服务,基础设施也是现有的,那么完全可以不使用 Aspire。您需要进行以下调整:

  • 移除 AppHost 项目
  • 移除 ServiceDefaults 项目
  • 移除 MigrationsService 项目,按照传统方式来管理数据库迁移
  • 在服务中移除 ServiceDefaults 依赖
  • 在服务中按照 ASP.NET Core 的标准方式来配置连接字符串等内容