【问题标题】:Accessing Documentation XML for Blazor.Shared Models for API Docs访问 Blazor 的文档 XML。API 文档的共享模型
【发布时间】:2020-07-04 21:13:03
【问题描述】:

我有一个 Blazor “全栈”(ASP.NET Core 托管)解决方案,其中默认包括三个项目:Blazor.ClientBlazor.ServerBlazor.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.Serverbin 的路径。共享 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


【解决方案1】:

共享的 xml 文档位于单独的 bin 中

是的,但它们通常会在构建时复制到服务器 bin 文件夹中。

我现在正在研究一个类似的项目,并且“它确实有效”。

【讨论】:

  • 这引导我找到解决方案的正确方向。我在每个项目文件中定义了一个明确的 xml 文档路径 (<DocumentationFile>bin\$(Configuration)\$(TargetFramework)\$(AssemblyName).Doc.xml</DocumentationFile>)。那没有用。当我在两个项目中用<GenerateDocumentationFile>true</GenerateDocumentationFile> 替换这条线时,它就开始工作了。
猜你喜欢
  • 1970-01-01
  • 2021-10-27
  • 1970-01-01
  • 2015-01-07
  • 2021-02-19
  • 2012-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多