能否在Visual Studio的csproj项目文件中配置NSwagCSharp代码生成器?
可否在csproj中配置NSwagCSharp代码生成器
可以,你完全可以通过修改csproj项目文件中的OpenApiReference节点自定义NSwagCSharp的代码生成规则,覆盖Visual Studio添加OpenAPI服务时的默认配置,无需依赖NSwagStudio工具。
配置操作步骤
- 先通过Visual Studio 2019解决方案资源管理器的「Connected Services」入口,按默认流程添加目标Swagger JSON对应的OpenAPI服务,添加完成后csproj文件内会自动生成包含
CodeGenerator="NSwagCSharp"属性的OpenApiReference节点 - 编辑csproj文件,在自动生成的
OpenApiReference节点内新增自定义配置子节点,调整生成规则 - 保存csproj文件后重新生成项目,代码生成器就会按照新配置生成客户端代码
常用配置项参考
你可以根据需求添加以下常用配置:
Namespace:指定生成的客户端代码所在的命名空间ClassName:指定生成的客户端类的名称GenerateClientInterfaces:设为true时会同步生成客户端对应的接口定义UseDateTimeOffset:设为true时会将接口返回的时间类型默认生成为DateTimeOffset而非DateTimeGenerateDocumentationComments:设为false时会取消生成Swagger注释对应的XML注释DisposeHttpClient:设为false时生成的客户端不会自动释放HttpClient实例,适合使用HttpClientFactory注入的场景GenerateOptionalParameters:设为true时会将非必填接口参数生成为可选参数
完整配置示例
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net6.0</TargetFramework> </PropertyGroup> <ItemGroup> <!-- 自动生成的OpenAPI引用节点 --> <OpenApiReference Include="OpenAPIs\order-service.swagger.json" CodeGenerator="NSwagCSharp"> <!-- 自定义配置项 --> <Namespace>MyProject.OrderService.Apis</Namespace> <ClassName>OrderApiClient</ClassName> <GenerateClientInterfaces>true</GenerateClientInterfaces> <UseDateTimeOffset>true</UseDateTimeOffset> <DisposeHttpClient>false</DisposeHttpClient> <GenerateOptionalParameters>true</GenerateOptionalParameters> </OpenApiReference> </ItemGroup> </Project>
内容的提问来源于stack exchange,提问作者Francois Denis
相关产品推荐
相关产品推荐

