在.NET中是否有API可以读取XML注释文档文件?

17
在这个问题中,我看到微软为BCL提供了XML文档文件。我想知道是否有.net内的API可以在运行时使用来查找它们。我知道我们可以使用XML API手动解析这些文件。
应用场景是:我们允许在我们的系统中使用自定义(第三方)类型/程序集,并在UI中选择这些类型/程序集时,我们希望提取由自定义类型/程序集创建者指定的文档,如果不可用,则提供其他默认值。

我建议您查看nDoc - Vikram
谢谢,我已经完成了。但它并不能做到我想要的。 - Preet Sangha
你用了什么或者你是如何做到的? - Vikram
抱歉,我有点困惑,不太明白你的评论。能否请您详细说明一下? - Preet Sangha
我的意思是ndoc已经过时了。代码注释需要考虑到泛型等因素。 - Preet Sangha
5个回答

7
我在CodePlex上维护Jolt.NET项目,并实现了一个执行此任务的功能。请参考Jolt库以获取更多信息。
本质上,该库允许您使用System.Reflection中的元数据类型(即MethodInfoPropertyInfo等)编程地定位和查询程序集的XML文档注释文件。

4

Microsoft Sandcastle 是一款从程序集中提取文档的工具,可以使用 XML 注释文件来辅助提取,该工具已经开源。您可以尝试查看该工具的代码。


嗯... 我对 Sandcastle 的经验是它使用了 XSL 处理和反射。我会再次检查它。 - Preet Sangha
似乎它反映了命名空间和类型层次结构,而不是注释。因此问题仍然未解决。 - Preet Sangha

2

2

我们来思考一下这个问题。

XML注释从未成为程序集单元的一部分。因此,您所谈论的第三方程序集将没有任何信息供您从中提取注释。

现在,如果这些程序集可以生成包含此文档的XML文件,可能使用SandCastle或nDoc,则可以按照您想要的方式读取这些XML文件。

接下来的问题是:假设您拥有这些XML文档文件,如何解析并读取它们?

  • 我建议使用 Linq to XML 快速简便地加载此文档。与SandCastle执行的XSLT处理相比,这种方法更好。只要您了解XML文档文件的XML模式/层次结构,使用Linq to XML做到这一点不应该花费太长时间。

请告诉我进展如何,或者如果您有任何问题。


感谢您的回答。我们目前正在解析XML文件(使用Linq2Xml)。我想确定的是,是否有一个特定的可重用功能集在.NET(或其丑陋的子代VS.net)中,可以比我们处理注释文件的方式更好地执行处理。 - Preet Sangha

1

抱歉,其他答案被自动选择了。对不起。 - Preet Sangha

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接