当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《缺少公开可见类型或成员的XML注释》经验,为你挑选了9个好方法。

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

怎么解决这个?



1> Jon Skeet..:

5个选项:

填写文档注释(很棒,但很耗时)

关闭注释生成(在项目属性中)

禁用项目属性中的警告(在'项目属性'中转到项目属性 - >构建>"错误和警告"(部分),抑制警告(文本框),添加1591(逗号分隔列表))

使用#pragma warning disable 1591禁用警告只是一些代码位(和#pragma warning restore 1591事后)

忽略警告(坏主意 - 你会错过新的"真实"警告)


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

2> Isak Savo..:

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

///
/// Gets the answer
///
public int MyMethod()
{
   return 42;
}

您需要

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

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

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


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

3> Sprotty..:

禁止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注释警告.

4> ekhanna..:

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

在此输入图像描述



5> Matthias Mei..:

插入XML注释.;-)

/// 
/// Describe your member here.
/// 
public string Something
{
    get;
    set;
}

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


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

6> Ajay Aradhya..:

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

    禁用XML文档:

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

    自己坐下来写文档吧!

XML文档摘要如下:

/// 
/// Description of the class/method/variable
/// 
..declaration goes here..



7> Mike Guthrie..:

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

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

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



8> Marius Agur..:

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

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



9> deadManN..:

在您的解决方案中,一旦选中了生成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 LanguageBasedNames { get; set; }

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

#pragma warning restore 1591

        /// 
        /// Some countries do not have neither a State, nor a Province
        /// 
        public string StateOrProvinceId { get; set; }
    }
}

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

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有