(轉)解決swagger跨專案或跨程式集註釋不顯示問題
阿新 • • 發佈:2020-07-18
原文地址:https://www.cnblogs.com/ricolee/p/swagger-summary.html
背景#
我們在使用Swagger生成.NET Core Web Api
專案介面文件時候,發現介面的入參和出參的註釋是看不見的,如下:
但是我想要結果是這樣:
原因分析以及方案#
為什麼沒有顯示註釋呢,註釋確實寫了呀?
原因很簡單,通常我們用Swagger的時候只加載當前專案生成的xml
註釋檔案,例如這樣:
var xmlPath = Path.Combine(basePath, "AppData", "XXX.WebAPI.xml");
services.AddSwaggerGen(c =>
{
c.IncludeXmlComments(item);
}
如果你的入參和出參的實體不在當前專案檔案下,而是在Model層或者領域層建立的,肯定是沒有的。
怎麼解決?
- 首先入參和出參的實體所在專案要勾選輸出
xml
註釋檔案; 這個簡單在專案的屬性->生成頁面勾選就行; - Swagger要載入
xml
註釋檔案;
程式碼如下:
Copypublic 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;
}
}
即可實現以上效果!