背景
我們在使用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
注釋文件;
代碼如下:
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;
}
}
即可實現以上效果!