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

NSwag CLI配置:如何通过nswag.json传递自定义TypeNameGenerator

解决NSwag CLI配置自定义TypeNameGenerator的问题

核心问题原因

NSwag CLI加载自定义类型生成器时,需要满足三个关键条件:

  • 自定义类必须编译为独立的可加载程序集(类库形式)
  • 配置中指定的类型全名和程序集名称必须完全匹配
  • NSwag CLI能定位到该程序集的路径

步骤1:将CustomTypeNameGenerator编译为类库

把你的CustomTypeNameGenerator类迁移到一个类库项目(例如命名为MyNSwagExtensions),编译生成MyNSwagExtensions.dll。Web项目的编译输出依赖复杂,直接用其中的类会导致NSwag无法加载。

步骤2:修改nswag.json配置

在codeGenerators.openApiToCSharpClient节点下添加typeNameGenerator配置,格式为[完整类型名], [程序集名称](程序集名称不带.dll后缀):

{
  "runtime": "Net70",
  "defaultVariables": null,
  "documentGenerator": {
    "fromDocument": {
      "json": "./wwwroot/Architecture/json-schemas/swagger.json",
      "flattenInheritanceHierarchy": false
    }
  },
  "codeGenerators": {
    "openApiToCSharpClient": {
      "clientBaseClass": null,
      "generateClientClasses": true,
      "generateClientInterfaces": true,
      "clientBaseInterface": null,
      "injectHttpClient": true,
      "disposeHttpClient": false,
      "jsonLibrary": "SystemTextJson",
      "output": "Client.cs",
      "namespace": "Mynamespace",
      "typeNameGenerator": "MyNSwagExtensions.CustomTypeNameGenerator, MyNSwagExtensions"
    }
  }
}

步骤3:确保NSwag CLI能找到程序集

任选一种方式让NSwag定位到你的类库:

  • 将类库DLL复制到NSwag CLI的安装目录(例如%USERPROFILE%\.dotnet\tools\.store\nswag\对应的版本路径\net70)
  • 在MSBuild的Exec命令中添加/assemblyPath参数指定类库路径:
    <Exec Command="$(NSwagExe_Net70) run $(NSwagConfiguration) /variables:OpenApiDocument=$(OpenApiDocument),GeneratedOutput=$(GeneratedOutput) /assemblyPath:$(SolutionDir)MyNSwagExtensions\bin\$(Configuration)\net7.0\MyNSwagExtensions.dll" />
    
  • 将类库输出目录添加到系统环境变量PATH中

步骤4:调整MSBuild依赖顺序

在Web项目的项目文件中添加类库项目的依赖,确保类库在NSwag目标执行前完成编译:

<ItemGroup>
  <ProjectReference Include="..\MyNSwagExtensions\MyNSwagExtensions.csproj" />
</ItemGroup>

完成以上配置后,NSwag就能加载自定义类型生成器,自动截取完全限定名的最后部分作为生成类的名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:05:02