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

时间:2008-10-15 06:24:11

标签: c# visual-studio

我收到此警告:“缺少公开可见类型或成员的XML评论”。

如何解决这个问题?

16 个答案:

答案 0 :(得分:612)

5个选项:

  • 填写文档评论(很棒,但很费时)
  • 关闭评论生成(在项目属性中)
  • 禁用项目属性中的警告(在'项目属性'中转到项目属性 - >构建>“错误和警告”(部分),抑制警告(文本框),添加1591(逗号分隔列表))
  • 使用#pragma warning disable 1591仅针对部分代码禁用警告(之后再#pragma warning restore 1591
  • 忽略警告(不好主意 - 你会错过新的“真实”警告)

答案 1 :(得分:85)

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

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

您需要对所有成员发送这些<summary>类型的评论 - 这些评论也会显示在intellisense弹出菜单中。

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

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

答案 2 :(得分:38)

取消对XML评论的警告

(不是我的工作,但我发现它很有用所以我已经包含了文章&amp; link)

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注释中没有匹配的param标记(但其他参数可以) 溶液

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

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

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

答案 3 :(得分:22)

插入XML评论。 ; - )

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

乍一看这似乎是一个笑话,但实际上可能有用。对我来说,考虑一下甚至用于私人方法的方法也是有帮助的(当然,除非非常简单)。

答案 4 :(得分:17)

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

enter image description here

答案 5 :(得分:12)

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

  1. 禁用XML文档:
      

    右键单击您的项目 - &gt;属性 - &gt; &#39;建立&#39;标签 - &gt;取消选中XML文档文件。

  2. 自己坐下来写文档!
  3. XML文档摘要如下:

    /// <summary>
    /// Description of the class/method/variable
    /// </summary>
    ..declaration goes here..
    

答案 6 :(得分:8)

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

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

此外,我想指出警告仅在公开显示的成员上表达。因此,如果您将类库设置为仅显示其所需内容,则可以在不记录privateinternal成员的情况下完成。

答案 7 :(得分:8)

我知道这是一个非常古老的主题,但它是谷歌的第一个回复所以我想我会添加这些信息:

只有在&#34;项目属性&#34;下的警告级别设置为4时才会出现此问题。 - &GT; &#34;生成&#34 ;.除非您真的需要那么多信息,否则您可以将其设置为3并且您将摆脱这些警告。当然,更改警告级别不仅会影响评论,因此如果您不确定要丢失的内容,请参阅文档:
https://msdn.microsoft.com/en-us/library/thxezb7y.aspx

答案 8 :(得分:6)

在您的解决方案中,一旦您选中生成XML文档文件的选项,它就会开始检查您的公共成员,如果没有XMLDoc,则会收到每个元素的警告。 如果你真的不想发布你的DLL,那么你也不需要文档,请转到你的解决方案,构建部分,然后关闭它,否则如果你需要它,那么填写它们,如果有不重要的话属性和字段,只需用预编译器指令超越它们 #pragma warning disable 1591 你也可以恢复警告: #pragma warning restore 1591

pragma用法:在你得到编译器警告的地方之前的代码中的任何地方...(对于文件,把它放在头文件中,你不需要再次启用它,单个类环绕一个类,或者用于方法包装方法,或者...你不需要包装它,你可以调用它并随便恢复它(从文件的开头开始,然后在方法内结束)),写下这段代码:

#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; }
    }
}

注意 pragma指令从行的开头

开始

答案 9 :(得分:2)

#pragma warning disable 1591
#pragma warning disable 1591
#pragma warning disable 1572
#pragma warning disable 1571
#pragma warning disable 1573
#pragma warning disable 1587
#pragma warning disable 1570

答案 10 :(得分:2)

将警告级别设置为2可抑制此消息。不知道它是否是最好的解决方案,因为它也会抑制有用的警告。

答案 11 :(得分:2)

Jon Skeet的答案非常适合您使用VisualStudio进行构建。但是,如果您通过命令行构建sln(在我的情况下是通过Ant),那么您可能会发现msbuild忽略了sln抑制请求。

将此添加到msbuild命令行为我解决了问题:

/p:NoWarn=1591

答案 12 :(得分:1)

档案&gt; 修改&gt; 查看项目(点击)

下拉弓的底部(点击打开/当前工作&gt; 属性), 在“输出”下的“构建”中打开项目属性页面。 “取消选中” XML文档复选框。

重建并且没有警告。

答案 13 :(得分:1)

您需要为显示警告的成员添加///注释。

见下面的代码

public EventLogger()
{
    LogFile = string.Format("{0}{1}", LogFilePath, FileName);
}

显示警告 缺少公开可见类型或成员'.EventLogger()'

的XML注释

我添加了对会员的评论并且警告已经消失。

///<Summary>
/// To write a log <Anycomment as per your code>
///</Summary>
public EventLogger()
{
    LogFile = string.Format("{0}{1}", LogFilePath, FileName);
}

答案 14 :(得分:1)

抑制警告的另一种方法是将一个条目添加到csproj文件中:

<Project>
    <PropertyGroup>
        ...     
        <!--disable missing comment warning-->
        <NoWarn>1591</NoWarn>
    </PropertyGroup>
...

答案 15 :(得分:-4)

在将属性附加到方法

后,我收到了该消息
[webMethod]
public void DoSomething()
{
}

但正确的方法是:

[webMethod()] // Note the Parentheses 
public void DoSomething()
{
}