diff --git a/SwaggerStudy/Program.cs b/SwaggerStudy/Program.cs index c7ffe33..be2f424 100644 --- a/SwaggerStudy/Program.cs +++ b/SwaggerStudy/Program.cs @@ -21,10 +21,19 @@ namespace SwaggerStudy Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { - webBuilder.UseStartup(); + //测试 Swagger 设置 + //webBuilder.UseStartup(); + + //不使用 Swagger //webBuilder.UseStartup(); + + //简单引入Swagger //webBuilder.UseStartup(); - //webBuilder.UseStartup(); + + //启用xml注释 + webBuilder.UseStartup(); + + //webBuilder.UseStartup(); //webBuilder.UseStartup(); //webBuilder.UseStartup(); diff --git a/SwaggerStudy/Startup.cs b/SwaggerStudy/Startup.cs index 468ce4b..825de38 100644 --- a/SwaggerStudy/Startup.cs +++ b/SwaggerStudy/Startup.cs @@ -11,19 +11,13 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; -using Swashbuckle; -using Swashbuckle.AspNetCore.Swagger; -using Swashbuckle.AspNetCore.SwaggerGen; -using Swashbuckle.AspNetCore.SwaggerUI; - using SwaggerStudy.Services; -using Microsoft.OpenApi.Models; namespace SwaggerStudy { /// - /// 鏈紩鍏wagger + /// 涓嶄娇鐢 Swagger /// public class Startup { @@ -38,11 +32,16 @@ namespace SwaggerStudy { services .AddControllers() + //閰嶇疆System.Text.Json閫夐」 .AddJsonOptions(jsonOption=> { + //鏁撮綈鎵撳嵃锛氬帇缂╂牸寮(涓琛)杩樻槸鏁撮綈鏍煎紡(鎹㈣) jsonOption.JsonSerializerOptions.WriteIndented = true; + //鍏佽(蹇界暐)瀵硅薄鎴栨暟鎹湯灏惧浣欑殑閫楀彿 jsonOption.JsonSerializerOptions.AllowTrailingCommas = true; + //鑷畾涔夋椂闂存牸寮忚浆鎹㈠櫒 jsonOption.JsonSerializerOptions.Converters.Add(new DatetimeJsonConverter()); + //杞箟瀛楃涓茬紪鐮佸櫒锛氱洿鎺ユ樉绀轰腑鏂 jsonOption.JsonSerializerOptions.Encoder= System.Text.Encodings.Web.JavaScriptEncoder.Create(System.Text.Unicode.UnicodeRanges.All); }); diff --git a/SwaggerStudy/Startup01.cs b/SwaggerStudy/Startup01.cs index b9bce69..50ba183 100644 --- a/SwaggerStudy/Startup01.cs +++ b/SwaggerStudy/Startup01.cs @@ -10,6 +10,7 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; +using Microsoft.OpenApi.Models; using Swashbuckle; using Swashbuckle.AspNetCore.Swagger; @@ -18,12 +19,17 @@ using Swashbuckle.AspNetCore.SwaggerUI; using SwaggerStudy.Services; -using Microsoft.OpenApi.Models; namespace SwaggerStudy { /// /// 绠鍗曞紩鍏wagger + /// 1銆佷娇鐢∟uget鍖呯鐞嗗櫒锛屽紩鐢 Swashbuckle.AspNetCore 搴 + /// 2銆佸紩鍏ュ懡鍚嶇┖闂达細Microsoft.OpenApi.Models + /// 3銆佸湪 Startup.cs 鐨 ConfigureServices 鏂规硶涓紝娉ㄥ唽 Swagger 鐢熸垚鍣紝瀹氫箟涓涓垨澶氫釜 Swagger 鏂囨。銆 + /// 4銆佸湪 Startup.cs 鐨 Configure 鏂规硶涓紝鍚敤 Swagger涓棿浠 + /// 5銆佸湪 Startup.cs 鐨 Configure 鏂规硶涓紝鍚敤 Swagger UI涓棿浠讹紝鎸囧畾 Swagger JSON 绔偣浠ヤ究浠庝腑鍚姩瀹 + /// 6銆佺‘淇 WebAPI Action鍜宲arameters 浣跨敤鏄惧紡鐨""HttpXX" and "FromXX"缁戝畾杩涜淇グ /// public class Startup01 { @@ -38,17 +44,28 @@ namespace SwaggerStudy { services .AddControllers() - .AddJsonOptions(jsonOption=> + //閰嶇疆System.Text.Json閫夐」 + .AddJsonOptions(jsonOption => { + //鏁撮綈鎵撳嵃锛氬帇缂╂牸寮(涓琛)杩樻槸鏁撮綈鏍煎紡(鎹㈣) + jsonOption.JsonSerializerOptions.WriteIndented = true; + //鍏佽(蹇界暐)瀵硅薄鎴栨暟鎹湯灏惧浣欑殑閫楀彿 + jsonOption.JsonSerializerOptions.AllowTrailingCommas = true; + //鑷畾涔夋椂闂存牸寮忚浆鎹㈠櫒 jsonOption.JsonSerializerOptions.Converters.Add(new DatetimeJsonConverter()); - jsonOption.JsonSerializerOptions.Encoder= System.Text.Encodings.Web.JavaScriptEncoder.Create(System.Text.Unicode.UnicodeRanges.All); + //杞箟瀛楃涓茬紪鐮佸櫒锛氱洿鎺ユ樉绀轰腑鏂 + jsonOption.JsonSerializerOptions.Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Create(System.Text.Unicode.UnicodeRanges.All); }); - #region swagger + + //娉ㄥ唽Swagger鐢熸垚鍣紝瀹氫箟涓涓垨澶氫釜 Swagger 鏂囨。 services.AddSwaggerGen(setup => { - setup.SwaggerDoc("GroupA", new OpenApiInfo { Title = "Swagger瀛︿範", Version = "绗竴鐗" }); + #region 瀹氫箟Swagger鏂囨。 + //name鍙傛暟鍗充负SwaggerUI涓璖waggerEndpoint鏂规硶鍙傛暟涓殑{documentName} + //涓よ呭繀椤讳繚鎸佷竴鑷达紝鍚﹀垯寮傚父 + setup.SwaggerDoc(name: "v1", new OpenApiInfo { Title = "Swagger瀛︿範", Version = "绗竴鐗" }); + #endregion }); - #endregion services.AddTransient(); } @@ -60,11 +77,20 @@ namespace SwaggerStudy app.UseDeveloperExceptionPage(); } - app.UseSwagger(); - app.UseSwaggerUI(setup => - { - setup.SwaggerEndpoint("/swagger/GroupA/swagger.json", "Swagger瀛︿範绗竴鐗"); - + //鍚敤 Swagger 涓棿浠 + app.UseSwagger(setup => + { + + }); + + //鍚敤 SwaggerUI 涓棿浠 + app.UseSwaggerUI(setup => + { + #region 娣诲姞Swagger JSON绔偣 + //蹇呴』鍖呭惈{documentName}鍗虫槸SwaggerDoc鐨刵ame鍙傛暟. + //榛樿涓/swagger/{documentName}/swagger.json + setup.SwaggerEndpoint("/swagger/v1/swagger.json", "Swagger瀛︿範绗竴鐗"); + #endregion }); app.UseRouting(); diff --git a/SwaggerStudy/Startup02.cs b/SwaggerStudy/Startup02.cs index 599ff97..ae299ac 100644 --- a/SwaggerStudy/Startup02.cs +++ b/SwaggerStudy/Startup02.cs @@ -10,6 +10,7 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; +using Microsoft.OpenApi.Models; using Swashbuckle; using Swashbuckle.AspNetCore.Swagger; @@ -18,12 +19,17 @@ using Swashbuckle.AspNetCore.SwaggerUI; using SwaggerStudy.Services; -using Microsoft.OpenApi.Models; namespace SwaggerStudy { /// - /// 浣跨敤Swagger UI + /// 鍚敤xml娉ㄩ噴 + /// 1銆佹墦寮椤圭洰鏂囦欢xx.csproj锛孭ropertyGroup鑺傜偣鍐呮坊鍔 + /// true + /// $(NoWarn);1591 + /// 2銆丼tartup.cs鐨凜onfigureServices鏂规硶涓殑services.AddSwaggerGen閲岋紝鐢╯etup.IncludeXmlComments()鎵鏈夐」鐩畑ml娉ㄩ噴鏂囦欢 + /// 3銆乄ebApi鏂规硶涓庢帶鍒跺櫒涓紝浣跨敤xml娉ㄩ噴 + /// 4銆侀噸鏂扮紪璇戝悗浣跨敤 /// public class Startup02 { @@ -38,12 +44,38 @@ namespace SwaggerStudy { services .AddControllers() - .AddJsonOptions(jsonOption=> + //閰嶇疆System.Text.Json閫夐」 + .AddJsonOptions(jsonOption => { + //鏁撮綈鎵撳嵃锛氬帇缂╂牸寮(涓琛)杩樻槸鏁撮綈鏍煎紡(鎹㈣) + jsonOption.JsonSerializerOptions.WriteIndented = true; + //鍏佽(蹇界暐)瀵硅薄鎴栨暟鎹湯灏惧浣欑殑閫楀彿 + jsonOption.JsonSerializerOptions.AllowTrailingCommas = true; + //鑷畾涔夋椂闂存牸寮忚浆鎹㈠櫒 jsonOption.JsonSerializerOptions.Converters.Add(new DatetimeJsonConverter()); - jsonOption.JsonSerializerOptions.Encoder= System.Text.Encodings.Web.JavaScriptEncoder.Create(System.Text.Unicode.UnicodeRanges.All); + //杞箟瀛楃涓茬紪鐮佸櫒锛氱洿鎺ユ樉绀轰腑鏂 + jsonOption.JsonSerializerOptions.Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Create(System.Text.Unicode.UnicodeRanges.All); }); + //娉ㄥ唽Swagger鐢熸垚鍣紝瀹氫箟涓涓垨澶氫釜 Swagger 鏂囨。 + services.AddSwaggerGen(setup => + { + #region 瀹氫箟Swagger鏂囨。 + //name鍙傛暟鍗充负SwaggerUI涓璖waggerEndpoint鏂规硶鍙傛暟涓殑{documentName} + //涓よ呭繀椤讳繚鎸佷竴鑷达紝鍚﹀垯寮傚父 + setup.SwaggerDoc(name: "v1", new OpenApiInfo { Title = "Swagger瀛︿範", Version = "绗竴鐗" }); + #endregion + + #region 鍖呭惈xml娉ㄩ噴 + var xmlCommentFiles = System.IO.Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, $"SwaggerStudy*.xml", System.IO.SearchOption.TopDirectoryOnly); + foreach (var xmlFile in xmlCommentFiles) + { + //includeControllerXmlComments鍙傛暟锛氭槸鍚﹀惎鐢ㄦ帶鍒跺櫒涓婄殑xml娉ㄩ噴 + setup.IncludeXmlComments(filePath: xmlFile, includeControllerXmlComments: true); + } + #endregion + }); + services.AddTransient(); } @@ -54,6 +86,22 @@ namespace SwaggerStudy app.UseDeveloperExceptionPage(); } + //鍚敤 Swagger 涓棿浠 + app.UseSwagger(setup=> + { + + }); + + //鍚敤 SwaggerUI 涓棿浠 + app.UseSwaggerUI(setup => + { + #region 娣诲姞Swagger JSON绔偣 + //蹇呴』鍖呭惈{documentName}鍗虫槸SwaggerDoc鐨刵ame鍙傛暟. + //榛樿涓/swagger/{documentName}/swagger.json + setup.SwaggerEndpoint("/swagger/v1/swagger.json", "Swagger瀛︿範绗竴鐗"); + #endregion + }); + app.UseRouting(); app.UseAuthorization(); diff --git a/SwaggerStudy/Startup031.cs b/SwaggerStudy/Startup031.cs new file mode 100644 index 0000000..8aae380 --- /dev/null +++ b/SwaggerStudy/Startup031.cs @@ -0,0 +1,113 @@ +using System; +using System.Linq; +using System.Threading.Tasks; +using System.Collections.Generic; + +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; + +using Swashbuckle; +using Swashbuckle.AspNetCore.Swagger; +using Swashbuckle.AspNetCore.SwaggerGen; +using Swashbuckle.AspNetCore.SwaggerUI; + + +using SwaggerStudy.Services; +using Microsoft.OpenApi.Models; +using Microsoft.OpenApi.Interfaces; +using Microsoft.OpenApi.Any; + +namespace SwaggerStudy +{ + /// + /// 榛樿System.Text.Json搴忓垪鍖栧簱 + /// + public class Startup031 + { + public Startup031(IConfiguration configuration) + { + Configuration = configuration; + } + + public IConfiguration Configuration { get; } + + public void ConfigureServices(IServiceCollection services) + { + services + .AddControllers() + //閰嶇疆System.Text.Json閫夐」 + .AddJsonOptions(jsonOption => + { + //鏁撮綈鎵撳嵃锛氬帇缂╂牸寮(涓琛)杩樻槸鏁撮綈鏍煎紡(鎹㈣) + jsonOption.JsonSerializerOptions.WriteIndented = true; + //鍏佽(蹇界暐)瀵硅薄鎴栨暟鎹湯灏惧浣欑殑閫楀彿 + jsonOption.JsonSerializerOptions.AllowTrailingCommas = true; + //鑷畾涔夋椂闂存牸寮忚浆鎹㈠櫒 + jsonOption.JsonSerializerOptions.Converters.Add(new DatetimeJsonConverter()); + //杞箟瀛楃涓茬紪鐮佸櫒锛氱洿鎺ユ樉绀轰腑鏂 + jsonOption.JsonSerializerOptions.Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Create(System.Text.Unicode.UnicodeRanges.All); + }); + + services.AddTransient(); + + //娉ㄥ唽Swagger鐢熸垚鍣紝瀹氫箟涓涓垨澶氫釜 Swagger 鏂囨。 + services.AddSwaggerGen(setup => + { + #region 瀹氫箟Swagger鏂囨。 + //name鍙傛暟鍗充负SwaggerUI涓璖waggerEndpoint鏂规硶鍙傛暟涓殑{documentName} + //涓よ呭繀椤讳繚鎸佷竴鑷达紝鍚﹀垯寮傚父 + setup.SwaggerDoc(name: "v1", new OpenApiInfo { Title = "Swagger瀛︿範", Version = "绗竴鐗" }); + #endregion + + #region 鍖呭惈xml娉ㄩ噴 + var xmlCommentFiles = System.IO.Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, $"SwaggerStudy*.xml", System.IO.SearchOption.TopDirectoryOnly); + foreach (var xmlFile in xmlCommentFiles) + { + //includeControllerXmlComments鍙傛暟锛氭槸鍚﹀惎鐢ㄦ帶鍒跺櫒涓婄殑xml娉ㄩ噴 + setup.IncludeXmlComments(filePath: xmlFile, includeControllerXmlComments: true); + } + #endregion + + //榛樿浣跨敤 System.Text.Json + }); + } + + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) + { + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + + //鍚敤 Swagger 涓棿浠 + app.UseSwagger(setup => + { + + }); + + //鍚敤 SwaggerUI 涓棿浠 + app.UseSwaggerUI(setup => + { + #region 娣诲姞Swagger JSON绔偣 + //蹇呴』鍖呭惈{documentName}鍗虫槸SwaggerDoc鐨刵ame鍙傛暟. + //榛樿涓/swagger/{documentName}/swagger.json + setup.SwaggerEndpoint("/swagger/v1/swagger.json", "Swagger瀛︿範绗竴鐗"); + #endregion + }); + + app.UseRouting(); + + app.UseAuthorization(); + + app.UseEndpoints(endpoints => + { + endpoints.MapControllers(); + }); + } + } +} diff --git a/SwaggerStudy/Startup032.cs b/SwaggerStudy/Startup032.cs new file mode 100644 index 0000000..2e1cbae --- /dev/null +++ b/SwaggerStudy/Startup032.cs @@ -0,0 +1,109 @@ +using System; +using System.Linq; +using System.Threading.Tasks; +using System.Collections.Generic; + +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; + +using Swashbuckle; +using Swashbuckle.AspNetCore.Swagger; +using Swashbuckle.AspNetCore.SwaggerGen; +using Swashbuckle.AspNetCore.SwaggerUI; + + +using SwaggerStudy.Services; +using Microsoft.OpenApi.Models; + +namespace SwaggerStudy +{ + /// + /// 浣跨敤Newtonsoft鏇夸唬榛樿System.Text.Json搴忓垪鍖栧簱 + /// + public class Startup032 + { + public Startup032(IConfiguration configuration) + { + Configuration = configuration; + } + + public IConfiguration Configuration { get; } + + public void ConfigureServices(IServiceCollection services) + { + services + .AddControllers() + //閰嶇疆System.Text.Json閫夐」 + .AddJsonOptions(jsonOption => + { + //鏁撮綈鎵撳嵃锛氬帇缂╂牸寮(涓琛)杩樻槸鏁撮綈鏍煎紡(鎹㈣) + jsonOption.JsonSerializerOptions.WriteIndented = true; + //鍏佽(蹇界暐)瀵硅薄鎴栨暟鎹湯灏惧浣欑殑閫楀彿 + jsonOption.JsonSerializerOptions.AllowTrailingCommas = true; + //鑷畾涔夋椂闂存牸寮忚浆鎹㈠櫒 + jsonOption.JsonSerializerOptions.Converters.Add(new DatetimeJsonConverter()); + //杞箟瀛楃涓茬紪鐮佸櫒锛氱洿鎺ユ樉绀轰腑鏂 + jsonOption.JsonSerializerOptions.Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Create(System.Text.Unicode.UnicodeRanges.All); + }); + + //娉ㄥ唽Swagger鐢熸垚鍣紝瀹氫箟涓涓垨澶氫釜 Swagger 鏂囨。 + services.AddSwaggerGen(setup => + { + #region 瀹氫箟Swagger鏂囨。 + //name鍙傛暟鍗充负SwaggerUI涓璖waggerEndpoint鏂规硶鍙傛暟涓殑{documentName} + //涓よ呭繀椤讳繚鎸佷竴鑷达紝鍚﹀垯寮傚父 + setup.SwaggerDoc(name: "v1", new OpenApiInfo { Title = "Swagger瀛︿範", Version = "绗竴鐗" }); + #endregion + + #region 鍖呭惈xml娉ㄩ噴 + var xmlCommentFiles = System.IO.Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, $"SwaggerStudy*.xml", System.IO.SearchOption.TopDirectoryOnly); + foreach (var xmlFile in xmlCommentFiles) + { + //includeControllerXmlComments鍙傛暟锛氭槸鍚﹀惎鐢ㄦ帶鍒跺櫒涓婄殑xml娉ㄩ噴 + setup.IncludeXmlComments(filePath: xmlFile, includeControllerXmlComments: true); + } + #endregion + }); + + services.AddTransient(); + } + + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) + { + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + + //鍚敤 Swagger 涓棿浠 + app.UseSwagger(setup => + { + + }); + + //鍚敤 SwaggerUI 涓棿浠 + app.UseSwaggerUI(setup => + { + #region 娣诲姞Swagger JSON绔偣 + //蹇呴』鍖呭惈{documentName}鍗虫槸SwaggerDoc鐨刵ame鍙傛暟. + //榛樿涓/swagger/{documentName}/swagger.json + setup.SwaggerEndpoint("/swagger/v1/swagger.json", "Swagger瀛︿範绗竴鐗"); + #endregion + }); + + app.UseRouting(); + + app.UseAuthorization(); + + app.UseEndpoints(endpoints => + { + endpoints.MapControllers(); + }); + } + } +} diff --git a/SwaggerStudy/StartupTest.cs b/SwaggerStudy/StartupTest.cs index 150aa32..578966b 100644 --- a/SwaggerStudy/StartupTest.cs +++ b/SwaggerStudy/StartupTest.cs @@ -10,16 +10,18 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; + using Microsoft.OpenApi.Models; +using Microsoft.OpenApi.Interfaces; +using Microsoft.OpenApi.Any; using Swashbuckle; +using Swashbuckle.AspNetCore; using Swashbuckle.AspNetCore.Swagger; using Swashbuckle.AspNetCore.SwaggerGen; using Swashbuckle.AspNetCore.SwaggerUI; using SwaggerStudy.Services; -using Microsoft.OpenApi.Interfaces; -using Microsoft.OpenApi.Any; namespace SwaggerStudy { @@ -39,15 +41,20 @@ namespace SwaggerStudy { services .AddControllers() + //閰嶇疆System.Text.Json閫夐」 .AddJsonOptions(jsonOption => { + //鏁撮綈鎵撳嵃锛氬帇缂╂牸寮(涓琛)杩樻槸鏁撮綈鏍煎紡(鎹㈣) jsonOption.JsonSerializerOptions.WriteIndented = true; + //鍏佽(蹇界暐)瀵硅薄鎴栨暟鎹湯灏惧浣欑殑閫楀彿 jsonOption.JsonSerializerOptions.AllowTrailingCommas = true; + //鑷畾涔夋椂闂存牸寮忚浆鎹㈠櫒 jsonOption.JsonSerializerOptions.Converters.Add(new DatetimeJsonConverter()); + //杞箟瀛楃涓茬紪鐮佸櫒锛氱洿鎺ユ樉绀轰腑鏂 jsonOption.JsonSerializerOptions.Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Create(System.Text.Unicode.UnicodeRanges.All); }); - //娉ㄥ叆SwaggerGen + //娉ㄥ唽Swagger鐢熸垚鍣紝瀹氫箟涓涓垨澶氫釜 Swagger 鏂囨。 services.AddSwaggerGen(setup => { //娉ㄦ剰锛歯ame鍙傛暟鍗虫槸DocumentName, 鍦⊿waggerUi涓湁浣跨敤锛岄厤缃殑缁堢粨鐐归噷蹇呴』淇濇寔涓鑷 @@ -152,6 +159,9 @@ namespace SwaggerStudy //swagger 璁块棶椤甸潰鍓嶇紑锛氶粯璁wagger //SwaggerUi棣栭〉鍦板潃锛歜aseUrl+鍓嶈緧+index.html 榛樿锛/swagger/index.html setup.RoutePrefix = "Swagger"; + + //蹇呴』鍖呭惈{documentName}:鍗虫槸SwaggerDoc鐨刵ame鍙傛暟. + //榛樿涓/swagger/{documentName}/swagger.json setup.SwaggerEndpoint("/WebApi/swagger/DemoName/swagger.json", "WebApi 娴嬭瘯鐗"); }); diff --git a/SwaggerStudy/SwaggerStudy.csproj b/SwaggerStudy/SwaggerStudy.csproj index 819ef67..166c388 100644 --- a/SwaggerStudy/SwaggerStudy.csproj +++ b/SwaggerStudy/SwaggerStudy.csproj @@ -14,6 +14,7 @@ +