我收到此警告:“缺少公开可见类型或成员的XML评论”。
如何解决这个问题?
答案 0 :(得分:612)
5个选项:
#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)
答案 5 :(得分:12)
这是因为在您的项目属性中指定了XML文档文件,您的方法/类是公开的,缺少文档 你可以:
右键单击您的项目 - &gt;属性 - &gt; &#39;建立&#39;标签 - &gt;取消选中XML文档文件。
XML文档摘要如下:
/// <summary>
/// Description of the class/method/variable
/// </summary>
..declaration goes here..
答案 6 :(得分:8)
我想在此处列出的答案中添加一些内容:
正如Isak指出的那样,XML文档对类库很有用,因为它为Visual Studio中的任何使用者提供了智能感知。因此,一个简单而正确的解决方案是简单地关闭任何顶级项目(例如UI等)的文档,这些项目不会在其自己的项目之外实现。
此外,我想指出警告仅在公开显示的成员上表达。因此,如果您将类库设置为仅显示其所需内容,则可以在不记录private
和internal
成员的情况下完成。
答案 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()
{
}