我的注释那去了?

  当我们用nuget引用三方库时,在类型,或类型成员上会有注释,如下图,是MySql官方包,command的ExecuteNonQuery的注释

我的注释那去了?

 

   我们自己写一个类库项目CommentsLibrary,给类,构造函数,方法添加xml注释,然后生成

using System;

namespace CommentsLibrary
{
    /// <summary>
    /// Test类注释
    /// </summary>
    public class TestClass
    {
        /// <summary>
        /// Test类注释 构造
        /// </summary>
        public TestClass()
        {
        }
        /// <summary>
        /// 方法注释
        /// </summary>
        /// <param name="param">注释参数</param>
        /// <returns>注释返回值</returns>
        public string TestMethod(string param)
        {
            return $"{param}:{DateTime.Now}";
        }
    }
}

  然后在我们的CommentsApp项目中引用CommentsLibrary.dll(不是在同一个解决方案中引用项目,因为我们是把dll给别人用,不是把源码给别人用),你会发现是没有注释的,我的注释哪去了呢?

我的注释那去了?

 

   那继续回到MySqlCommand,看一下他为什么会有注释,选中CommentsApp项目,依赖项中的包,找到MySql.Data

我的注释那去了?

 

   进入nuget包所在的路径

我的注释那去了?

  在lib下,有不同的适配框架,你会发现,不管那个框架,除了dll外还有xml文件,打开xml,你会发现,原来注释藏在这里,也就是说,我们只引用dll时,是没有注释的,注释是单独放在xml中的。

  其实为项目添加xml也很简单,接下来为CommentsLibrary项目添加xml,注释会自动生成到xml文件中

我的注释那去了?

 

   这里,我们重新引用CommentsLibrary.dll,查看TestMethod,就会有注释了(有时有缓存,可能会看不到或删除xml还能看到注释)

我的注释那去了?

 

   所以,我们最好用nuget来管理我们的包,如果是私有库,就搭建私有nuget服务(还记得我把标题写错的那篇文章吗?轻量NuGet服务—GaGet),这样即能有版本区分,也能自然把注释xml引入进来。否则,就把xml文件带上

 

  想要更快更方便的了解相关知识,可以关注微信公众号    我的注释那去了?

 

 

上一篇:clickhouse-docker安装


下一篇:Commit Message 规范