【问题标题】:Swagger-Swashbuckle include xmlcomments from dependent dllsSwagger-Swashbuckle 包含来自依赖 dll 的 xmlcomments
【发布时间】:2018-05-01 21:00:00
【问题描述】:

我需要记录一个 asp.net core web api,我正在使用 swagger 和 swashbuckle。

我环顾四周,找到了这个链接,但它很旧并且无法使用 https://github.com/domaindrivendev/Swashbuckle/issues/93

有人可以告诉我如何包含来自另一个 dll 的 xml cmets 吗?

谢谢

【问题讨论】:

    标签: swagger asp.net-core-webapi swashbuckle


    【解决方案1】:

    swashbuckle 有两个版本:

    如果这个问题上的标签是正确的,那么您的链接不是您正在使用的版本,但所提供的解决方案仍然可以让您很好地了解您需要做什么。

    您可以使用在 Swashbuckle.AspNetCore 上仍然可用的 IncludeXmlComments 包含任意数量的 xml cmets,请参见此处:
    Swashbuckle.AspNetCore.SwaggerGen/Application/SwaggerGenOptions.cs#L259

    首先,您需要确保您需要的 xml cmets 作为部署的一部分发送到服务器,否则 Swashbuckle 将不会显示它不存在的内容...



    一种解决方案可能是递归循环查找 XML 文件并使用 IncludeXmlComments 添加它们,如下所示:

    public void IncludeAllXmlComments(string folder)
    {
      if (!string.IsNullOrEmpty(folder))
      {
        foreach (var name in Directory.GetFiles(folder, "*.XML", SearchOption.AllDirectories))
        {
          IncludeXmlComments(filePath: name);
        }
      }
    }
    

    这个示例代码只是为了给你一个想法,而不是复制/粘贴

    【讨论】:

    • 您好,感谢您抽出宝贵时间,我正在使用 Swashbucke.AspNetCore(2.4.0),我认为它是 asp.net core web api 的最新正确版本。正确吗?将每个 dll 的 xmlcmets 输出到特定共享目录并从那里读取它的解决方案吗?
    • @developer9969 两者都是,所有 dll 的 xmlcmets 应该已经输出到 dll 所在的相同位置,默认情况下是:project\bin\Debug 或根据您的构建设置发布跨度>
    • 正确。他们已经这样做了。但是查看您的伪代码,您正在传递一个文件夹,然后获取所有文件。我认为这意味着所有 dll.xmlcmets 都输出到指定文件夹而不是默认的 bin/debig/release dir
    • @developer9969 我的代码的关键点是:Directory.GetFiles(folder, "*.XML", SearchOption.AllDirectories) 将获取文件夹中的所有 .xml 文件以及给定文件夹的任何子文件夹,因此我们的想法是提供一个与你可以,让 GetFiles 为你完成工作,(我假设你的文件夹中没有 millon 文件,那会很糟糕,非常糟糕)
    猜你喜欢
    • 2010-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 2021-12-23
    • 1970-01-01
    • 2020-03-18
    • 2021-12-24
    相关资源
    最近更新 更多