C# · 12月 31, 2021

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

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

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

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

解决方法 如何不提供intellisense? ///<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 { }

这样,您仍然可以记录不受支持的类(内部用户也很重要!)并让您的外部用户在intellisense上看不到它们.在内部,您可以使visual studio“看到”这些高级构造. EditorBrowsableAttribute的页面告诉我们如何:

In Visual C#,you can control when advanced properties appear in IntelliSense and the Properties Window with the Hide Advanced Members setting under Tools | Options | Text Editor | C#. The corresponding EditorBrowsableState is Advanced.