我正在尝试在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?关于为什么它会产生重复,有什么建议吗?
3条答案
按热度按时间nzk0hqpo1#
我遇到了同样的问题,代码生成不喜欢operationId中带有下划线的端点。幸运的是,我使用的服务也是我们代码的一部分,所以我可以直接转到API端的Swagger配置并更改CustomOperationIds设置。
wnrlj8wa2#
我下载并使用NSwagStudio生成客户端代码,在生成代码时没有遇到Visual Studio连接器遇到的相同问题。
https://github.com/RicoSuter/NSwag/wiki/NSwagStudio
ibps3vxo3#
实际上是由该选项引起的
OperationGenerationMode:MultipleClientsFromOperationId
但是,如果您的类名被设置为静态名称,则会导致与您类似的错误。
正确的解决方案应该是将类名更改为如下形式
所以它会生成不同的类。