From 8b70cb0ff128812d22a48b649e2eda591d5f27a2 Mon Sep 17 00:00:00 2001 From: Arika Ishinami Date: Tue, 2 Sep 2025 20:17:42 +0900 Subject: [PATCH 1/2] add overload `IncludeMagicOnionXmlComments` like Swashbuckle's `IncludeXmlComments` --- docs/docs/integration/json-transcoding.md | 6 +++--- .../current/integration/json-transcoding.md | 6 +++--- .../current/integration/json-transcoding.md | 6 +++--- .../JsonTranscodingSample.Server/Program.cs | 6 ++++-- .../MagicOnionSwaggerGenOptionsExtensions.cs | 7 +++++++ 5 files changed, 20 insertions(+), 11 deletions(-) diff --git a/docs/docs/integration/json-transcoding.md b/docs/docs/integration/json-transcoding.md index 890ed2ea6..471dd2fb8 100644 --- a/docs/docs/integration/json-transcoding.md +++ b/docs/docs/integration/json-transcoding.md @@ -27,7 +27,7 @@ builder.Services.AddSwaggerGen(options => { // Reflect the XML documentation comments of the service definition in Swagger. // To use this feature, you must enable the Generate XML Comments option in project options. - options.IncludeMagicOnionXmlComments(Path.Combine(AppContext.BaseDirectory, "JsonTranscodingSample.Shared.xml")); + options.IncludeMagicOnionXmlComments(typeof(IMyService).Assembly); }); var app = builder.Build(); @@ -62,8 +62,8 @@ System.AggregateException: Some services are not able to be constructed (Error w ``` -Reference -MSDN documentation for the usage of Swashbuckle.AspNetCore.Swagger used in MagicOnion. +Reference +MSDN documentation for the usage of Swashbuckle.AspNetCore.Swagger used in MagicOnion. https://learn.microsoft.com/en-us/aspnet/core/tutorials/getting-started-with-swashbuckle?view=aspnetcore-8.0&tabs=visual-studio ```csharp diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/integration/json-transcoding.md b/docs/i18n/ja/docusaurus-plugin-content-docs/current/integration/json-transcoding.md index 795068123..73db188af 100644 --- a/docs/i18n/ja/docusaurus-plugin-content-docs/current/integration/json-transcoding.md +++ b/docs/i18n/ja/docusaurus-plugin-content-docs/current/integration/json-transcoding.md @@ -29,7 +29,7 @@ builder.Services.AddSwaggerGen(options => { // Reflect the XML documentation comments of the service definition in Swagger. // To use this feature, you must enable the Generate XML Comments option in project options. - options.IncludeMagicOnionXmlComments(Path.Combine(AppContext.BaseDirectory, "JsonTranscodingSample.Shared.xml")); + options.IncludeMagicOnionXmlComments(typeof(IMyService).Assembly); }); var app = builder.Build(); @@ -64,8 +64,8 @@ System.AggregateException: Some services are not able to be constructed (Error w ``` -参考 -MagicOnion で使用されている Swashbuckle.AspNetCore.Swagger の使用法が記録された MSDN ドキュメントです。 +参考 +MagicOnion で使用されている Swashbuckle.AspNetCore.Swagger の使用法が記録された MSDN ドキュメントです。 https://learn.microsoft.com/ja-jp/aspnet/core/tutorials/getting-started-with-swashbuckle?view=aspnetcore-8.0&tabs=visual-studio ```csharp diff --git a/docs/i18n/ko/docusaurus-plugin-content-docs/current/integration/json-transcoding.md b/docs/i18n/ko/docusaurus-plugin-content-docs/current/integration/json-transcoding.md index 2ceb86c3a..8a1d16cc1 100644 --- a/docs/i18n/ko/docusaurus-plugin-content-docs/current/integration/json-transcoding.md +++ b/docs/i18n/ko/docusaurus-plugin-content-docs/current/integration/json-transcoding.md @@ -29,7 +29,7 @@ builder.Services.AddSwaggerGen(options => { // Reflect the XML documentation comments of the service definition in Swagger. // To use this feature, you must enable the Generate XML Comments option in project options. - options.IncludeMagicOnionXmlComments(Path.Combine(AppContext.BaseDirectory, "JsonTranscodingSample.Shared.xml")); + options.IncludeMagicOnionXmlComments(typeof(IMyService).Assembly); }); var app = builder.Build(); @@ -63,8 +63,8 @@ System.AggregateException: Some services are not able to be constructed (Error w ``` -참고 -MagicOnion 에서 사용된 Swashbuckle.AspNetCore.Swagger 의 사용법이 기록된 MSDN 입니다. +참고 +MagicOnion 에서 사용된 Swashbuckle.AspNetCore.Swagger 의 사용법이 기록된 MSDN 입니다. https://learn.microsoft.com/ko-kr/aspnet/core/tutorials/getting-started-with-swashbuckle?view=aspnetcore-8.0&tabs=visual-studio ```csharp diff --git a/samples/JsonTranscoding/JsonTranscodingSample.Server/Program.cs b/samples/JsonTranscoding/JsonTranscodingSample.Server/Program.cs index 02fc34847..73e371cd7 100644 --- a/samples/JsonTranscoding/JsonTranscodingSample.Server/Program.cs +++ b/samples/JsonTranscoding/JsonTranscodingSample.Server/Program.cs @@ -1,3 +1,5 @@ +using JsonTranscodingSample.Shared; + var builder = WebApplication.CreateBuilder(args); // Add services to the container. @@ -19,7 +21,7 @@ builder.Services.AddSwaggerGen(options => { // Reflect the XML documentation comments of the service definition in Swagger. - options.IncludeMagicOnionXmlComments(Path.Combine(AppContext.BaseDirectory, "JsonTranscodingSample.Shared.xml")); + options.IncludeMagicOnionXmlComments(typeof(IMyFirstService).Assembly); // // Add JWT security scheme to Swagger. // options.AddJwtSecurityScheme(); @@ -42,4 +44,4 @@ app.MapMagicOnionService(); app.MapGet("/", () => "Communication with gRPC endpoints must be made through a gRPC client. To learn how to create a client, visit: https://go.microsoft.com/fwlink/?linkid=2086909"); -app.Run(); \ No newline at end of file +app.Run(); diff --git a/src/MagicOnion.Server.JsonTranscoding.Swagger/MagicOnionSwaggerGenOptionsExtensions.cs b/src/MagicOnion.Server.JsonTranscoding.Swagger/MagicOnionSwaggerGenOptionsExtensions.cs index 97a1d30b1..d3445879d 100644 --- a/src/MagicOnion.Server.JsonTranscoding.Swagger/MagicOnionSwaggerGenOptionsExtensions.cs +++ b/src/MagicOnion.Server.JsonTranscoding.Swagger/MagicOnionSwaggerGenOptionsExtensions.cs @@ -1,3 +1,4 @@ +using System.Reflection; using System.Xml.Linq; using MagicOnion.Server.JsonTranscoding.Swagger; using Swashbuckle.AspNetCore.SwaggerGen; @@ -14,4 +15,10 @@ public static void IncludeMagicOnionXmlComments(this SwaggerGenOptions options, { options.AddOperationFilterInstance(new MagicOnionXmlCommentsOperationFilter(xmlDoc)); } + + public static void IncludeMagicOnionXmlComments(this SwaggerGenOptions options, Assembly sharedAssembly) + { + var path = Path.Combine(AppContext.BaseDirectory, $"{sharedAssembly.GetName().Name}.xml"); + IncludeMagicOnionXmlComments(options, XDocument.Load(path)); + } } From 8d07eaa7cfaacd20153ae791450048f395e28b83 Mon Sep 17 00:00:00 2001 From: Arika Ishinami Date: Tue, 2 Sep 2025 20:25:56 +0900 Subject: [PATCH 2/2] small fix --- .../MagicOnionSwaggerGenOptionsExtensions.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/MagicOnion.Server.JsonTranscoding.Swagger/MagicOnionSwaggerGenOptionsExtensions.cs b/src/MagicOnion.Server.JsonTranscoding.Swagger/MagicOnionSwaggerGenOptionsExtensions.cs index d3445879d..e30441609 100644 --- a/src/MagicOnion.Server.JsonTranscoding.Swagger/MagicOnionSwaggerGenOptionsExtensions.cs +++ b/src/MagicOnion.Server.JsonTranscoding.Swagger/MagicOnionSwaggerGenOptionsExtensions.cs @@ -18,7 +18,8 @@ public static void IncludeMagicOnionXmlComments(this SwaggerGenOptions options, public static void IncludeMagicOnionXmlComments(this SwaggerGenOptions options, Assembly sharedAssembly) { - var path = Path.Combine(AppContext.BaseDirectory, $"{sharedAssembly.GetName().Name}.xml"); - IncludeMagicOnionXmlComments(options, XDocument.Load(path)); + IncludeMagicOnionXmlComments(options, XDocument.Load( + Path.Combine(AppContext.BaseDirectory, $"{sharedAssembly.GetName().Name}.xml") + )); } }