当我们用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文件带上
想要更快更方便的了解相关知识,可以关注微信公众号











