本文档收集了在使用 Perigon.CLI 过程中可能遇到的常见问题及其解决方案。如果您在使用过程中遇到其他问题,欢迎通过 GitHub 讨论区 提出,我们将持续更新此文档以帮助更多用户。
部分苹果电脑使用 ARM 芯片,当前 Perigon.CLI 暂不支持 ARM 架构。
如果执行EFMigrations.ps1没有成功,并提供执行dotnet tool restore,请尝试修改.config/dotnet-tools.json文件中的"version"字段为最新版本,然后重新运行脚本。
微软提供的官方 OpenAPI 一直不够完善,经历两个大版本后仍然存在诸多问题。
备注:使用 json schema 来表示 openapi 文档,本身存在一定的设计缺陷。
这个问题通常是由实体间的相互引用导致的,并且它不会与您配置的 JsonOptions 保持一致,也没有提供任何配置项来调整。
这是一个很常见的情况,但官方 OpenAPI 库目前尚未提供理想的解决方案。
例如,实体 User 中定义了多个导航属性,而这些导航属性又引用了 User 实体,就很可能出现此报错。
详细信息可以参考:GitHub Issue。
解决方法:
DTO,不要直接返回实体。[JsonIgnore] 属性,避免 JSON 解析时的循环引用。Tip
建议不要直接返回实体,而是通过定义DTO来返回数据。
在 .NET 10 中已经添加了对 XML 注释的支持,但存在一些限制。
您必须在 WebAPI 项目中调用 services.AddOpenApi 来注入服务,因为使用了源代码生成器。这意味着您不能在其他程序集中复用,需要在每个 WebAPI 项目中都添加一遍。
您必须在 WebAPI 项目中引用 OpenAPI 包依赖,不可在其他程序集中引用,否则可能会报错,或无法正常生成相关的 XML 注释。
由于请求服务是通过读取 OpenAPI 文档来生成的,而 OpenAPI 可能在某些情况下生成不符合预期的内容,导致生成的请求服务代码有问题。
解决方法:
Important
模板本身使用 Swashbuckle.AspNetCore 来生成 OpenAPI 文档,并提供了一些扩展功能来增强生成的文档质量,能够更好地支持代码生成器的使用。
如果您只有一两个服务,基础设施也是现有的,那么完全可以不使用 Aspire。您需要进行以下调整:
MigrationsService 项目,按照传统方式来管理数据库迁移ASP.NET Core 的标准方式来配置连接字符串等内容