解决swagger跨项目或跨程序集注释不显示问题

时间:2024-10-12 11:43:48

背景

我们在使用Swagger生成.NET Core Web Api 项目接口文档时候,发现接口的入参出参的注释是看不见的,如下:

但是我想要结果是这样:

原因分析以及方案

为什么没有显示注释呢,注释确实写了呀?

原因很简单,通常我们用Swagger的时候只加载当前项目生成的xml注释文件,例如这样:

  1. var xmlPath = (basePath, "AppData", "");
  2. (c =>
  3. {
  4. (item);
  5. }

如果你的入参出参的实体不在当前项目文件下,而是在Model层或者领域层创建的,肯定是没有的。

怎么解决?

  1. 首先入参出参的实体所在项目要勾选输出xml注释文件; 这个简单在项目的属性->生成页面勾选就行;
  2. Swagger要加载xml注释文件;

代码如下:

  1. public void ConfigureServices(IServiceCollection services)
  2. {
  3. (c =>
  4. {
  5. foreach (var item in XmlCommentsFilePath)
  6. {
  7. (item);
  8. }
  9. });
  10. }
  11. static List<string> XmlCommentsFilePath
  12. {
  13. get
  14. {
  15. var basePath = ;
  16. DirectoryInfo d = new DirectoryInfo(basePath);
  17. FileInfo[] files = ("*.xml");
  18. var xmls = (a => (basePath, )).ToList();
  19. return xmls;
  20. }
  21. }

即可实现以上效果!