缺少公开可见类型或成员的XML注释

365 c# visual-studio

我收到此警告:"缺少公开可见类型或成员的XML注释".

怎么解决这个?

Jon*_*eet 646

5个选项:

  • 填写文档注释(很棒,但很耗时)
  • 关闭注释生成(在项目属性中)
  • 禁用项目属性中的警告(在'项目属性'中转到项目属性 - >构建>"错误和警告"(部分),抑制警告(文本框),添加1591(逗号分隔列表))
  • 使用#pragma warning disable 1591禁用警告只是一些代码位(和#pragma warning restore 1591事后)
  • 忽略警告(坏主意 - 你会错过新的"真实"警告)

  • 如果您以@NickJ explaind禁用警告,请确保为所有配置更改它,而不仅仅是debug\release. (9认同)
  • 此外,如果您从_Service Reference_自动生成的代码中收到此警告,则可以右键单击服务引用,选择"配置服务引用...",然后将"生成的类的访问级别"更改为"内部". (6认同)
  • @Jon,找到了解决方案:如果对带有分部类的已处理代码发出此警告,请查找未生成的分部类的"另一半".如果在那里添加XML注释,则生成的代码的警告将消失.我对从WP7项目中的XAML代码生成的App.gics文件中的App类发出了此警告.要解决它,我必须在App.xaml.cs文件中添加XML注释(不会生成). (5认同)
  • 如果要取消整个类的代码,也可以将其添加为类属性:[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage","CS1591")] (4认同)

Isa*_*avo 89

将XML注释添加到公开可见的类型和成员当然:)

///<Summary>
/// Gets the answer
///</Summary>
public int MyMethod()
{
   return 42;
}
Run Code Online (Sandbox Code Playgroud)

您需要<summary>对所有成员进行这些类型注释 - 这些注释也会显示在intellisense弹出菜单中.

您收到此警告的原因是您将项目设置为输出文档xml文件(在项目设置中).这对于类库(.dll程序集)非常有用,这意味着.dll的用户可以在visual studio中获取API的intellisense文档.

我建议您自己获取GhostDoc Visual Studio AddIn 的副本.使文档更容易.

  • -1推荐"GhostDoc" - 我见过的最愚蠢的AddOn.它生成文档.现在停下来考虑一下.您希望代码更易于理解,因此您可以使用仅基于方法名称和参数类型生成文档的工具.这对你有意义吗?用户可以看到参数的名称和类型,添加注释到'DateTime date`- _ date_真的没有帮助. (26认同)
  • +1提及GhostDoc.从来不知道这一点,它确实使记录变得更容易. (8认同)
  • +1给出警告的原因.在项目属性(VS 2008)中的Build下找到了设置,并在10个神奇地检查过的项目中将其关闭,没有任何理由. (7认同)
  • @gdoron,你可能没有想过,但是你可以编辑GhostDoc生成的文档,这样可以节省大量时间,而不是从头开始编写整个文档. (4认同)
  • GhostDoc不只是猜测评论应该是什么 - 虽然大多数时候,它非常接近你只需编辑几个单词而不是输入整个东西 - 如果你正确记录(和你可能不是),大多数事情都有一个模板,它们需要如何措辞(对于属性,构造函数等),而GhostDoc将这些放入 - 甚至更酷:如果你在儿童班,它可以用基类作为模板填写文档,而不是手工复制 - 它放入异常模糊等. (3认同)
  • GhostDoc 模板中的一些内容可能很有用(公共 API 的公共方法),但如果它能从名称猜出措辞,那是因为名称足够清晰(Clean Code)。另外,如果子类需要父类已有的注释,那么那里就会出现问题(DRY 并且不要让工具破坏 DRY)。 (2认同)

Spr*_*tty 39

禁止XML注释的警告

(不是我的工作,但我发现它很有用所以我已经包含了文章和链接)

http://bernhardelbl.wordpress.com/2009/02/23/suppress-warnings-for-xml-comments/

在这里,我将向您展示如何在Visual Studio构建后禁止XML注释的警告.

背景

如果已在Visual Studio项目设置中选中"XML文档文件"标记,则会创建包含所有XML注释的XML文件.此外,由于缺少或错误的XML注释,您还会在设计器生成的文件中收到很多警告.虽然有时警告可以帮助我们改进和稳定我们的代码,但是获取数百条XML注释警告只是一种痛苦.警告

缺少对公开可见类型或成员的 XML注释...对...的 XML注释具有'...'的参数标记,但没有该名称的参数参数'...'在XML注释中没有匹配的参数标记'...'(但是其他参数做)解决方案

您可以在Visual Studio中禁止每个警告.

  • 右键单击Visual Studio项目/ Properties/Build选项卡

  • 在"抑制警告"中插入以下警告编号:1591,1572,1571,1573,1587,1570

  • 我只需要添加1591来抑制Xml注释警告. (6认同)

ekh*_*nna 23

还有另一种方法可以抑制这些消息,而无需任何代码更改或编译指示块.使用Visual Studio - 转到项目属性>构建>错误和警告>抑制警告 - 将1591附加到警告代码列表.

在此输入图像描述


Mat*_*eid 22

插入XML注释.;-)

/// <summary>
/// Describe your member here.
/// </summary>
public string Something
{
    get;
    set;
}
Run Code Online (Sandbox Code Playgroud)

这看起来像是第一眼的笑话,但它实际上可能是有用的.对我来说,考虑一下甚至用于私人方法的方法也是有帮助的(当然,除非真的微不足道).

  • 我总是评论方法,但是对于_properties_(它们是tehnically方法,但通常有简单的实现和不言而喻的名称),我宁愿避免添加多余的XML注释的繁琐和重复. (5认同)

Aja*_*hya 14

这是因为在您的项目属性中指定了XML文档文件,并且您的方法/类是公共的并且缺少文档.
你可以:

  1. 禁用XML文档:

    右键单击您的项目 - >属性 - >'构建'选项卡 - >取消选中XML文档文件.

  2. 自己坐下来写文档吧!

XML文档摘要如下:

/// <summary>
/// Description of the class/method/variable
/// </summary>
..declaration goes here..
Run Code Online (Sandbox Code Playgroud)


abd*_*sco 14

抑制警告的一种非常简单的方法是在.csproj文件中添加一个属性:

<Project>
    <PropertyGroup>
        ...     
        <!--disable missing comment warning-->
        <NoWarn>$(NoWarn);1591</NoWarn>
    </PropertyGroup>
...
Run Code Online (Sandbox Code Playgroud)


Mik*_*rie 8

我想在此处列出的答案中添加一些内容:

正如Isak指出的那样,XML文档对类库非常有用,因为它为Visual Studio中的任何使用者提供了智能感知.因此,一个简单而正确的解决方案是简单地关闭任何顶级项目(例如UI等)的文档,这些项目不会在其自己的项目之外实现.

此外,我想指出警告仅对公开可见的成员表示.因此,如果您将类库设置为仅显示其所需的内容,则可以在没有文档privateinternal成员的情况下完成.


Mar*_*gur 8

我知道这是一个非常古老的线程,但它是对谷歌的第一反应,所以我想我要补充的信息,该位:

此行为仅在警告级别下的"项目属性"设置为4时- >"生成" .除非你真的需要那么多信息,否则你可以将它设置为3并且你将摆脱这些警告.当然,更改警告级别不仅仅会影响评论,因此如果您不确定缺少什么,请参阅文档:https:
//msdn.microsoft.com/en-us/library/thxezb7y.aspx


dea*_*anN 7

在您的解决方案中,一旦选中了生成XML文档文件的选项,它将开始检查您的公共成员是否具有XMLDoc,如果没有,则每个元素都会收到警告。如果您确实不想发布DLL,并且也不需要文档,则转到解决方案,构建部分,然后将其关闭,否则,如果需要,请填充它们,如果不重要属性和字段,只需使用预编译器说明超越它们, #pragma warning disable 1591 您还可以恢复警告: #pragma warning restore 1591

编译指示用法:在代码中您得到编译器警告的位置之前的任何位置(对于文件,请将其放在标头中,并且您无需再次启用它,单个类环绕类或方法环绕)一个方法,或者……您不需要包装它,可以随意调用并恢复它(从文件的开头开始,在方法内部结束),编写以下代码:

#pragma warning disable 1591 如果需要还原它,请使用: #pragma warning restore 1591

这里是一个例子:

using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
using RealEstate.Entity.Models.Base;

namespace RealEstate.Models.Base
{
    public class CityVM
    {

#pragma warning disable 1591

        [Required]
        public string Id { get; set; }

        [Required]
        public string Name { get; set; }

        public List<LanguageBasedName> LanguageBasedNames { get; set; }

        [Required]
        public string CountryId { get; set; }

#pragma warning restore 1591

        /// <summary>
        /// Some countries do not have neither a State, nor a Province
        /// </summary>
        public string StateOrProvinceId { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,pragma指令从行首开始