dotnet-openapi produces uncompilable swaggerClient
- Dominant language
- C#
- Stars
- 38.4k
- Forks
- 10.9k
- Avg merge
- 2d 6h
- Merged PRs (30d)
- 290
Description
### Describe the bug
Using the dotnet-openapi tool, a broken client (uncompilable) is generated from a swagger definition.
### To Reproduce
1. Create a basic console application
2. Run dotnet-openapi against an openapi service definition
```
mkdir newapp
cd newapp
dotnet new console
dotnet openapi add url http://localhost:5000/swagger/v1/swagger.json -c NSwagCSharp
```
3. Use swaggerClient in Program.cs
``` C#
using System;
using System.Net.Http;
namespace newapp
{
class Program
{
static void Main(string[] args)
{
HttpClient httpClient = new HttpClient {BaseAddress = new Uri("http://localhost:5000")};
swaggerClient client = new swaggerClient(httpClient);
}
}
}
```
4. Attempt to build the application
```
[ $ ~/newapp ] dotnet build
Microsoft (R) Build Engine version 16.5.0+d4cbfca49 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.
Restore completed in 214.29 ms for /projects/newapp/newapp.csproj.
GenerateNSwagCSharp:
dotnet --roll-forward-on-no-candidate-fx 2 /Users/jrodenburg/.nuget/packages/nswag.msbuild/13.0.5/build/../tools/NetCore21//dotnet-nswag.dll openapi2csclient /className:swaggerClient /namespace:newapp /input:/projects/newapp/swagger.json /output:obj/swaggerClient.cs
NSwag command line tool for .NET Core NetCore21, toolchain v13.0.5.0 (NJsonSchema v10.0.22.0 (Newtonsoft.Json v11.0.0.0))
Visit http://NSwag.org for more information.
NSwag bin directory: /.nuget/packages/nswag.msbuild/13.0.5/tools/NetCore21
Code has been successfully written to file.
Duration: 00:00:00.9114557
obj/swaggerClient.cs(2761,26): error CS0102: The type 'swaggerClient' already contains a definition for 'ObjectResponseResult' [/projects/newapp/newapp.csproj]
obj/swaggerClient.cs(3150,26): error CS0102: The type 'swaggerClient' already contains a definition for 'ObjectResponseResult' [/projects/newapp/newapp.csproj]
obj/swaggerClient.cs(3433,26): error CS0102: The type 'swaggerClient' already contains a definition for 'ObjectResponseResult' [/projects/newapp/newapp.csproj]
obj/swaggerClient.cs(3898,26): error CS0102: The type 'swaggerClient' already contains a definition for 'ObjectResponseResult' [/projects/newapp/newapp.csproj]
obj/swaggerClient.cs(4087,26): error CS0102: The type 'swaggerClient' already contains a definition for 'ObjectResponseResult' [/projects/newapp/newapp.csproj]
obj/swaggerClient.cs(2655,6): error CS0579: Duplicate 'System.CodeDom.Compiler.GeneratedCode' attribute [/projects/newapp/newapp.csproj]
obj/swaggerClient.cs(2854,6): error CS0579: Duplicate 'System.CodeDom.Compiler.GeneratedCode' attribute [/projects/newapp/newapp.csproj]
obj/swaggerClient.cs(3243,6): error CS0579: Duplicate 'System.CodeDom.Compiler.GeneratedCode' attribute [/projects/newapp/newapp.csproj]
obj/swaggerClient.cs(3526,6): error CS0579: Duplicate 'System.CodeDom.Compiler.GeneratedCode' attribute [/projects/newapp/newapp.csproj]
obj/swaggerClient.cs(3991,6): error CS0579: Duplicate 'System.CodeDom.Compiler.GeneratedCode' attribute [/projects/newapp/newapp.csproj]
obj/swaggerClient.cs(2681,22): error CS0756: A partial method may not have multiple defining declarations [/projects/newapp/newapp.csproj]
obj/swaggerClient.cs(2880,22): error CS0756: A partial method may not have multiple defining declarations [/projects/newapp/newapp.csproj]
obj/swaggerClient.cs(3269,22): error CS0756: A partial method may not have multiple defining declarations [/projects/newapp/newapp.csproj]
{... further results elided ...}
```
### Further technical details
[ $ ~ ] dotnet --info
.NET Core SDK (reflecting any global.json):
Version: 3.1.200
Commit: c5123d973b
Runtime Environment:
OS Name: Mac OS X
OS Version: 10.14
OS Platform: Darwin
RID: osx.10.14-x64
Base Path: /usr/local/share/dotnet/sdk/3.1.200/
Host (useful for support):
Version: 3.1.3
Commit: 4a9f85e9f8
.NET Core SDKs installed:
2.2.402 [/usr/local/share/dotnet/sdk]
3.0.100 [/usr/local/share/dotnet/sdk]
3.1.100 [/usr/local/share/dotnet/sdk]
3.1.103 [/usr/local/share/dotnet/sdk]
3.1.200 [/usr/local/share/dotnet/sdk]
.NET Core runtimes installed:
Microsoft.AspNetCore.All 2.2.7 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.2.7 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.0.0 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.1.0 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.1.2 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.1.3 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 2.1.16 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.7 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 3.0.0 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.0 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.2 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.3 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
To install additional .NET Core runtimes or SDKs:
https://aka.ms/dotnet-download
- No IDE used in this scenario
Contributor guide
Assessment
This issue has not been assessed yet.