dotnet / dotnet/aspnetcore

dotnet-openapi produces uncompilable swaggerClient

Open
#21,656 26 comments 5 reactions 0 assignees View on GitHub
affected-few area-mvc bug feature-openapi severity-minor
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.