swagger Visual Studio 2019 -连接的服务参考- OpenAPI正在生成重复的类型

vptzau2j  于 2022-12-18  发布在  其他
关注(0)|答案(3)|浏览(160)

我正在尝试在Visual Studio 2019.Net 5.0中生成OpenApi服务引用。
右键单击项目〉添加〉连接服务〉+服务引用
我正在使用NetDocs API“https://api.vault.netvoyage.com/v2/swagger/docs/v2“。
结果:我得到了生成的C#客户端代码,但它复制了类型,并出现以下错误。

Severity    Code    Description Project File    Line    Suppression State
Error   CS0102  The type 'v2Client' already contains a definition for '_settings'   OpenAPITest C:\Users\dryfus\source\repos\OpenAPITest\obj\v2Client.cs    4941    Active
Error   CS0579  Duplicate 'System.CodeDom.Compiler.GeneratedCode' attribute OpenAPITest C:\Users\dryfus\source\repos\OpenAPITest\obj\v2Client.cs    4936    Active
Error   CS0102  The type 'v2Client' already contains a definition for '_baseUrl'    OpenAPITest C:\Users\dryfus\source\repos\OpenAPITest\obj\v2Client.cs    4939    Active
Error   CS0102  The type 'v2Client' already contains a definition for '_httpClient' OpenAPITest C:\Users\dryfus\source\repos\OpenAPITest\obj\v2Client.cs    4940    Active

有没有一种方法可以让它和连接器一起工作而不产生重复?或者甚至是cli?关于为什么它会产生重复,有什么建议吗?

nzk0hqpo

nzk0hqpo1#

我遇到了同样的问题,代码生成不喜欢operationId中带有下划线的端点。幸运的是,我使用的服务也是我们代码的一部分,所以我可以直接转到API端的Swagger配置并更改CustomOperationIds设置。

wnrlj8wa

wnrlj8wa2#

我下载并使用NSwagStudio生成客户端代码,在生成代码时没有遇到Visual Studio连接器遇到的相同问题。
https://github.com/RicoSuter/NSwag/wiki/NSwagStudio

ibps3vxo

ibps3vxo3#

实际上是由该选项引起的
OperationGenerationMode:MultipleClientsFromOperationId

  • 多个客户端来自操作ID:来自“{控制器}_{操作}”形式的Swagger操作ID的多个客户端

但是,如果您的类名被设置为静态名称,则会导致与您类似的错误。
正确的解决方案应该是将类名更改为如下形式

ClassName="{controller}ServiceClient"

所以它会生成不同的类。

相关问题