当我们用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文件带上