使用 OpenApiReference,如何使用 .nswag json 选项文件(或任何替代文件)配置代码生成器选项

g.p*_*dou 8 .net openapi nswag nswagstudio

语境

我已将连接的服务添加到我的 .NET 6 项目中,并使用 NSwagCSharp 代码生成器来生成客户端。(在我之前的项目中我使用了NSwagStudio)

我发现在 .csproj 文件中可以添加选项:

<OpenApiReference Include="OpenAPIs\swagger.json" CodeGenerator="NSwagCSharp" ClassName="MyClient">
  <SourceUri>https://localhost:xxxx/swagger/v1/swagger.json</SourceUri>
  <Options>/UseBaseUrl:false /GenerateClientInterfaces:true /InjectHttpClient:false, /DisposeHttpClient:false,
  </Options>
</OpenApiReference>
Run Code Online (Sandbox Code Playgroud)

这些选项似乎与 NSwagStudio 保存到其 .nswag 文件中的选项非常相同。我不确定这只是一个猜测,其中一些到目前为止似乎有效。(这有记录在某处吗?)

然而 NSwagStudio 也保存默认值(我不知道是什么),所以在典型的 .nswag 文件中,json 中有大约 80 个设置:

"codeGenerators": {
 "openApiToCSharpClient": {
  ...
  "generateClientInterfaces": true,
  "clientBaseInterface": null,
  ... up to more than 80 lines...
Run Code Online (Sandbox Code Playgroud)

问题

<Options>这将导致.csproj 文件中的 element中出现很长的一行。(似乎不允许换行(?))。有没有办法使用外部选项文件(例如 json .nswag 文件)来配置代码生成选项?

Ric*_*ues 0

我相信您可以通过使用您提到的 .nswag 文件并遵循此处的架构来实现这一目标:

https://github.com/RicoSuter/NSwag/wiki/NSwag-Configuration-Document