我正在寻找一种方法来以编程方式获取 ASP.net 中方法的 Xml 注释的摘要部分。
我查看了之前的相关帖子,但他们没有提供在网络环境中执行此操作的方法。
我无法使用任何第三方应用程序,并且由于网络环境,Visual Studio 插件也没有多大用处。
我发现的最接近可行的解决方案是 JimBlackler 项目,但它仅适用于 DLL。
当然,“提供 .CS 文件,获取 XML 文档”之类的内容是最佳选择。
现在的情况
我有一个网络服务并尝试为其动态生成文档。
阅读方法和属性很容易,但获取每个方法的摘要却让我有点困惑。
/// <summary>
/// This Is what I'm trying to read
/// </summary>
public class SomeClass()
{
/// <summary>
/// This Is what I'm trying to read
/// </summary>
public void SomeMethod()
{
}
}
解决方法- 将 Program.DLL/EXE 上的反射与 Program.XML 文件一起使用
如果您查看 Visual Studio 生成的同级 .XML 文件,您将看到 /members/member 具有相当平坦的层次结构。
您所要做的就是通过 MethodInfo 对象获取 DLL 中的每个方法。获得此对象后,您可以转向 XML 并使用 XPATH 获取包含此方法的 XML 文档的成员。
成员前面有一封信。方法的 XML 文档前面有“M:”,类的前面有“T:”等。
加载同级 XML
string docuPath = dllPath.Substring(0, dllPath.LastIndexOf(".")) + ".XML";
if (File.Exists(docuPath))
{
_docuDoc = new XmlDocument();
_docuDoc.Load(docuPath);
}
使用此 xpath 获取表示方法 XML 文档的成员
string path = "M:" + mi.DeclaringType.FullName + "." + mi.Name;
XmlNode xmlDocuOfMethod = _docuDoc.SelectSingleNode(
"//member[starts-with(@name, '" + path + "')]");
现在扫描子节点以查找“///”的所有行
有时 /// 摘要包含额外的空白,如果这打扰使用它来删除
var cleanStr = Regex.Replace(row.InnerXml, @"\s+", " ");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)