【发布时间】:2020-07-04 21:13:03
【问题描述】:
我有一个 Blazor “全栈”(ASP.NET Core 托管)解决方案,其中默认包括三个项目:Blazor.Client、Blazor.Server 和 Blazor.Shared。我在 Blazor.Server 上有一些 API 控制器,其中一些控制器使用 Blazor.Shared 中的模型。这是默认设置解决方案的方式(使用示例 WeatherForecast API)。我为自己的 API 遵循了相同的模型。
我现在正在尝试将 Swagger 文档添加到我的项目中,但我不知道如何为 Blazor.Shared 中的模型添加 XML 文档。结果,我只得到了控制器的描述,而不是他们使用的模型。具体来说,我正在尝试在 Startup.cs 中添加两个 xml 文档文件:
services.AddSwaggerGen(options =>
{
options.SwaggerDoc("v1", new OpenApiInfo { Title = "MyProject", Version = "v1" });
options.IncludeXmlComments(Path.Combine(System.AppContext.BaseDirectory, "Blazor.Server.Doc.xml"));
options.IncludeXmlComments(Path.Combine(System.AppContext.BaseDirectory, "Blazor.Shared.Doc.xml"));
});
但是,这里的第二行 IncludeXmlComments 会导致异常,因为 System.AppContext.BaseDirectory 为我提供了到 Blazor.Server 的 bin 的路径。共享 xml 文档位于 Blazor.Shared 项目中生成的单独 bin 中。
我一直在四处寻找,但听起来没有一种受支持的方法可以在 net core 中获取从一个项目到另一个项目的路径,所以我不确定该怎么做。我可以获得Blazor.Shared bin 的路径吗?还是我应该采取不同的方式来解决这个问题?最终:如何从 Blazor.Server 中的 Startup.cs 访问 Blazor.Shared 类的文档 xml?
【问题讨论】:
-
Blazor.Shared.xml 应该被复制到构建的基目录中。您是否检查过该文件是否存在于 Blazor.Shared/bin/debug/netstandard2.0 中?而且名字应该是Blazor.Shared.xml,为什么要加.Doc?
-
“这不起作用”是什么意思?当文件未找到时,您将收到异常。
标签: asp.net-core swagger blazor swashbuckle.aspnetcore