有没有办法让Visual Studio在编译时忽略<devdoc>标记?</devdoc>

时间:2012-10-27 23:43:18

标签: visual-studio visual-studio-2012 xml-documentation

基本上,我试图将所有文档保存在单独的文件中并使用<include>标记。这将让我保持我的源代码免于文档混乱。我仍然希望有一些方法可以获得有关类和成员的开发人员注释,因此我使用了<devdoc>标记。现在问题是Visual Studio将我的开发人员注释添加到xml文档文件中。有没有办法不将它编译到xml文档中?

/// <devdoc>This is an interesting Foo class</devdoc>
/// <include file="docs.xml" path='Doc/Member[@for="MyNamespace.Foo"]/*' />
public class Foo { ... }

导致:

<member name="T:MyNamespace.Foo">
  <devdoc>This is an interesting Foo class</devdoc>
  <Summary>Some summary for testing.</Summary>
</member>

我意识到Sandcastle在生成文档时不会使用<devdoc>类,但如果我想提供关于我的库的intellisense信息,我需要包含生成的xml文件。如果这是不可能的,那不是世界末日,但我希望有一种方法可以将它排除在外。

1 个答案:

答案 0 :(得分:0)

我会创建一个简单的控制台应用程序,它将从构建后的事件中调用。该应用程序将删除所有&lt; devdoc&gt;标签。它可以非常简单。只需阅读生成的XML文件并使用如下所示的正则表达式:

using System.Text.RegularExpressions;

Regex regex = new Regex("<devdoc>(.|\n)*</devdoc>", RegexOptions.Compiled | RegexOptions.Multiline);
s = regex.Replace(s, string.Empty);

您还可以使用XmlDocument及其GetElementsByTagName方法,然后使用XmlNode.RemoveChild删除标记。但我相信正则表达式会更有效率。