1. 程式人生 > 實用技巧 >(轉)解決swagger跨專案或跨程式集註釋不顯示問題

(轉)解決swagger跨專案或跨程式集註釋不顯示問題

原文地址:https://www.cnblogs.com/ricolee/p/swagger-summary.html

背景#

我們在使用Swagger生成.NET Core Web Api 專案介面文件時候,發現介面的入參出參的註釋是看不見的,如下:

但是我想要結果是這樣:

原因分析以及方案#

為什麼沒有顯示註釋呢,註釋確實寫了呀?

原因很簡單,通常我們用Swagger的時候只加載當前專案生成的xml註釋檔案,例如這樣:

Copy
var xmlPath = Path.Combine(basePath, "AppData", "XXX.WebAPI.xml");
services.AddSwaggerGen(c =>
{
    c.IncludeXmlComments(item);
}

如果你的入參出參的實體不在當前專案檔案下,而是在Model層或者領域層建立的,肯定是沒有的。

怎麼解決?

  1. 首先入參出參的實體所在專案要勾選輸出xml註釋檔案; 這個簡單在專案的屬性->生成頁面勾選就行;
  2. Swagger要載入xml註釋檔案;

程式碼如下:

Copy
public void ConfigureServices(IServiceCollection services)
{
    services.AddSwaggerGen(c =>
    {
        foreach (var item in XmlCommentsFilePath)
        {
            c.IncludeXmlComments(item);
        }
    });
}

static List<string> XmlCommentsFilePath
{
    get
    {
        var basePath = PlatformServices.Default.Application.ApplicationBasePath;
        DirectoryInfo d = new DirectoryInfo(basePath);
        FileInfo[] files = d.GetFiles("*.xml");
        var xmls = files.Select(a => Path.Combine(basePath, a.FullName)).ToList();
        return xmls;
    }
}

即可實現以上效果!