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

.NET 6 API如何基于当前代码而非NSwag Studio定义生成C#客户端?

基于.NET 6 API代码实时生成C#客户端(NSwag配置方案)

1. 安装必要的NuGet包

  • Application.API:确保已安装Swashbuckle.AspNetCore(你已集成Swagger UI,此步骤应已完成)。
  • Application.API.Http:安装NSwag.MSBuild包,用于构建时自动执行客户端生成任务。

2. 配置项目依赖

在Application.API.Http的.csproj文件中添加API项目引用,保证构建客户端前先编译最新的API代码:

<ProjectReference Include="..\Application.API\Application.API.csproj" />

3. 配置自动生成任务(两种方案可选)

方案一:直接用MSBuild命令生成(无需nswag.json)

修改Application.API.Http的.csproj,添加以下构建目标:

<Target Name="GenerateApiClient" BeforeTargets="BeforeBuild">
  <!-- 从API项目生成Swagger定义并直接生成客户端 -->
  <Exec Command="$(NSwagExe_Net60) aspnetcoreopenapi2csclient 
    /project:../Application.API/Application.API.csproj 
    /output:Generated/ApiClient.cs 
    /namespace:Application.API.Http 
    /generateClientInterfaces:true 
    /generateDtoTypes:true 
    /injectHttpClient:true" />
</Target>

参数说明:

  • /project:指定API项目路径
  • /output:客户端代码输出路径(建议放在Generated文件夹,避免手动修改)
  • /namespace:客户端代码的命名空间
  • /generateClientInterfaces:true:生成客户端接口,方便依赖注入
  • /injectHttpClient:true:生成支持注入HttpClient的构造函数

方案二:使用配置文件nswag.json(更灵活)

  1. 在Application.API.Http项目根目录创建nswag.json,配置如下:
{
  "runtime": "Net60",
  "documentGenerator": {
    "aspNetCoreToOpenApi": {
      "project": "../Application.API/Application.API.csproj",
      "documentName": "v1",
      "title": "Application API",
      "version": "1.0.0",
      "isAspNetCore": true,
      "resolveJsonOptions": true,
      "outputType": "OpenApi3"
    }
  },
  "codeGenerators": {
    "openApiToCSharpClient": {
      "className": "{controller}Client",
      "namespace": "Application.API.Http",
      "output": "Generated/ApiClient.cs",
      "generateClientInterfaces": true,
      "generateDtoTypes": true,
      "injectHttpClient": true,
      "disposeHttpClient": true,
      "generateBaseUrlProperty": true,
      "generateExceptionClasses": true
    }
  }
}

该配置直接从API项目动态生成Swagger定义,无硬编码的API内容,完全同步代码变更。

  1. 在Application.API.Http的.csproj中添加构建任务:
<Target Name="GenerateApiClient" BeforeTargets="BeforeBuild">
  <Exec Command="$(NSwagExe_Net60) run nswag.json /variables:Configuration=$(Configuration)" />
</Target>

4. 验证配置

  • 清理解决方案后重新构建Application.API.Http项目。
  • 检查Generated文件夹下的ApiClient.cs,确认接口、DTO与API代码一致。
  • 修改API的控制器或DTO,重新构建客户端项目,验证生成的代码自动更新。

注意事项

  • 确保NSwag.MSBuild版本与NSwag CLI版本一致,避免兼容性问题。
  • 生成的客户端代码禁止手动修改,所有变更通过调整API代码后重新生成实现。
  • 若API有自定义Json序列化配置,NSwag会自动读取AddJsonOptions中的设置,保证序列化逻辑一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 17:42:45