有选择地抑制C#中的XML代码注释?

Mik*_*ost 6 c# xml documentation code-documentation

我们向外部客户提供了许多程序集,但并非所有公共API都得到官方支持.例如,由于设计选择不是最佳,有时必须从组件公开公开类型才能使我们的其余代码工作,但我们不希望客户使用该类型.传达缺乏支持的一部分并不是以XML注释的形式提供任何智能感知.

有没有办法有选择地抑制XML注释?我正在寻找除了忽略警告1591之外的其他事情,因为这是一个长期维护问题.

示例:我有一个包含公共类A和B的程序集.A是官方支持的,应该有XML文档.B不适合外部使用,不应记录在案.我可以打开XML文档然后禁止警告1591.但是当我稍后添加官方支持的类C时,我希望编译器告诉我,我已经搞砸了并且没有添加XML文档.如果我在项目级别压制了1591,就不会发生这种情况.我想我可以#cragma跨越整个类,但似乎应该有更好的方法来做到这一点.

Joh*_*ers 5

制作此类方法internal,并将[assembly: InternalsVisibleTo("AssemblyName")]属性添加到显示它们的程序集中.

  • @Mike Post将您的公共API与您的私有API分开应该是您从第一天起主要考虑的问题,如果不是那么您需要进行大量的重构.没有一个快速解决方案,约翰建议实际上是一个整洁,不知道你可以将内部方法暴露给其他*朋友*组件. (3认同)

Jor*_*dão 3

根本不提供智能感知怎么样?

///<summary>A documentation</summary> 
public class A { }

///<summary>B documentation. This class is not supported...</summary> 
[EditorBrowsable(EditorBrowsableState.Advanced)]
public class B { }

///<summary>C documentation</summary> 
public class C { }
Run Code Online (Sandbox Code Playgroud)

这样,您仍然可以记录不受支持的类(内部用户也很重要!)并且让外部用户在智能感知上看不到它们。在内部,您可以使 Visual Studio 能够“看到”这些高级构造。该页面EditorBrowsableAttribute告诉我们如何:

在 Visual C# 中,您可以使用工具 | 下的隐藏高级成员设置来控制高级属性何时出现在 IntelliSense 和属性窗口中。选项| 文本编辑器 | C#。对应的EditorBrowsableState是Advanced。