最近在做 web api 开发的时候遇到这样的问题,即 HelpPage 里只能显示 api 控制器上的注释,对于那些引用了外部类库的类(比如POST提交需要用到的类),就无法显示它们的备注,在网上找到了解决方法,现分享给大家:
 
 
 
1、对引用的类库右键,属性,在生成里面点击“XML文档文件”,定义好生成的XML文件路径
( Web API 项目也要设置XML文档输出文件,这里我是 XmlDocument.xml )
 
 
 
 
2、把类库的 XML 文件拷贝到 Web API 项目的 App_Data 文件夹下,并包含在项目中,这样就应该有两个XML文件
 
 
 
 
 
3、在 Web API 项目中,打开 Areas\HelpPage\HelpPageConfig 找到如下语句 :
 
config.SetDocumentationProvider(new XmlDocumentationProvider(
HttpContext.Current.Server.MapPath("~/App_Data/XmlDocument.xml")));
将其替换成:
config.SetDocumentationProvider(new XmlDocumentationProvider(
HttpContext.Current.Server.MapPath("~/App_Data")));
(如果没有,请自行添加)
 
 
 
 
4、打开 Areas\HelpPage\XmlDocumentationProvider :
 
a.把私有变量 _documentNavigator 替换为:
 
private List<XPathNavigator> _documentNavigators = new List<XPathNavigator>();
 
b.然后构造器修改为:

public XmlDocumentationProvider(string documentPath)
{
  if (documentPath== null)
  {
    throw new ArgumentNullException("documentPath");
  }   var files = new[] { "XmlDocument.xml", "引用的类库XML文件名.xml" };
  foreach (var file in files)
  {
    XPathDocument xpath = new XPathDocument(Path.Combine(documentPath, file));
    _documentNavigators.Add(xpath.CreateNavigator());
  }
}
c. 在构造器后面添加一个方法:

private XPathNavigator SelectSingleNode(string selectExpression)
{
  foreach (var navigator in _documentNavigators)
  {
    var propertyNode = navigator.SelectSingleNode(selectExpression);
    if (propertyNode != null)
    return propertyNode;
  }
  return null;
}
d. 修复报错的地方(应该有三个地方报错),把 _documentNavigator.SelectSingleNode 替换为上面写的新方法 SelectSingleNode
 
 
 
 
最后,编译运行 Web API ,对于引用类库的类,已经有Description了(前提当然是这个类写了summary注释)。
 
 
 

怎样让引用类库的类在HelpPage上显示Description的更多相关文章

  1. Windows Store App 全球化:引用类库资源

    前面几个小节介绍了如何引用自身项目的资源,而有时在应用程序开发过程中可能需要访问其他项目中的资源.例如,当几个人或十几个人一起设计一个解决方案时,每个人的工作都是不同的,编写的项目也是不同的,但是每个 ...

  2. C#面向对象---对象成员、方法加载、引用类库

    一.方法重载: 1.两个函数同名,就互相构成方法的重载关系 2.重载的函数,必须跟其他函数之间具有不同的参数类型或参数个数 二.字段与属性 类的字段: 类里面是可以直接定义变量的,这些变量就叫类的字段 ...

  3. java在cmd下编译和执行引用jar的类

    java编译和执行引用第三方jarcmd  1.将上面的ojdbc14.jar文件,与调用程序复制到系统D盘的根目录下,切记:因为调用程序在wym.database包下,所以需要将类其所在的包一起拷贝 ...

  4. eclipse通过classpath variable引用类库

    众所周知.eclipse的project bulid path中能够引用第三方类库(如图1). 图1 可是这样的方式有个缺点:对类库的引用是通过绝对路径.假设有两台电脑(办公室1台.家1台),非常可能 ...

  5. Java中带包(创建及引用)的类的编译

    Java中带包(创建及引用)的类的编译与调试 java源程序的编译大家都知道,也就是cmd中到源文件所在目录下javac **.java即可,当程序中有包声明还能简简单单的直接javac **.jav ...

  6. 引用数据类型(类)和ArrayList

    引用数据类型(类) 类的类型为两种: 第一种,Java为我们提供好的类,如Scanner类,Scanner类等,这些已存在的类中包含了很多的方法与属性,可供我们使用. 第二种,我们自己创建的类,按照类 ...

  7. C#引用类库时出现黄色三角加感叹号的处理

    C#引用类库时出现黄色三角加感叹号的处理方法 一个C#项目 在引用中有个引用项上有个黄色三角加感叹号 导致报错 类库的目标框架不一致,修改成一样就可以了. 选中类库右击属性:“目标框架”,修改成与引用 ...

  8. java引用数据类型(类)

    1 引用数据类型分类 类的类型分两种 1)Java提供好的类,如Scanner类,Random类等,这些已存在的类中包含了很多的方法与属性,可供开发者使用.(类的变量是属性) 2)开发者自己创建的类, ...

  9. Java 方法的重载及引用数据类型(类)

    方法的重载 我们假设要在程序中实现一个对数字求和的方法,由于参与求和数字的个数和类型都不确定,因此要针对不同的情况去设计不同的方法. Java允许在一个类中定义多个名称相同的方法,但是参数的类型或个数 ...

随机推荐

  1. mysql修改数据路径

    步凑: 1.关闭mysql服务 [root@localhost /]# service mysqld stop 2.移动mysql文件夹到自定义的目录 [root@localhost /]# mv / ...

  2. DevExpress GridControl小结

    1. 如何解决单击记录整行选中的问题 View->OptionsBehavior->EditorShowMode 设置为:Click 2. 如何新增一条记录 (1).gridView.Ad ...

  3. 从零开始学 Web 之 HTML5(三)网络监听,全屏,文件读取,地理定位接口,应用程序缓存

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  4. Java并发编程笔记之基础总结(二)

    一.线程中断 Java 中线程中断是一种线程间协作模式,通过设置线程的中断标志并不能直接终止该线程的执行,而是需要被中断的线程根据中断状态自行处理. 1.void interrupt() 方法:中断线 ...

  5. Ajax之跨域访问与JSONP

    前言 同源策略的限制,使得ajax无法发出跨域请求.在许多情况下,我们需要让ajax支持跨域.以下是其中一种解决方案(JSONP).JSONP解决了跨域数据访问的问题. 在html中,具有src属性的 ...

  6. mysql主从复制总结

    第一步:开启所有MYSQL服务器的BIN日志,每台服务器设置一个唯一的server-id的值(默认是1,一般取IP最后一段) 修改主服务器(master)的my.cnf [mysqld] log-bi ...

  7. CEF C++环境搭建

    第一步:下载CEF 到这里下载最新版本的CEF http://cefbuilds.com/ 下载解压之后,大概会看到如下图所示的文件 cefclient:是一个比较复杂的示例代码cefsimple:是 ...

  8. [转]VR原理讲解及开发入门

    本文转自:http://www.52vr.com/article-661-1.html 本文是作者obuil根据多年心得专门为想要入门的VR开发者所写,由52VR网站提供支持.   1. VR沉浸感和 ...

  9. 关于SVN 操作 提示文件已过时,请先update

    提示文件已过时,请先update 错误产生原因:修改文件前没有先update,从svn获取该文件的最新版本. 解决方法:备份你修改后的文件,通过Revert恢复到服务器版本后,再比较之前备份的文件,进 ...

  10. 弱引用(WeakReference)

    在应用程序代码内实例化一个类或结构时,只要有代码引用它,就会形成强引用.这意味着垃圾回收器不会清理这样的对象使用的内存.但是如果当这个对象很大,并且不经常访问时,此时可以创建对象的弱引用,弱引用允许创 ...