一、软件介绍
      Sandcastle是一个管理类库的文档编译器,是用于编译发布组件(Assembly)信息的一个工具,这个工具通过反射和Xslt技术,可以从dll文件及其xml注释(命令行编译时加/doc参数或vs2005设置项目属性得到)得到一个完整的帮助文档,格式可以是Html或CHM甚至是任何自定义的格式。
  Sandcastle与.NET Framework 2.0和.NET Compact Framework组合使用。Sandcastle支持本地化,并提供一个基本的命令行编译器界面和一个Visual Studio插件。
  Sandcastle中共有三个组件:MrefBuilder、Build Assembler和XslTransform。这些工具使用编译汇编代码时生成的输出结果,包括DLL文件以及XML注释文件。 
  MrefBuilder反射一个项目的汇编代码并生成一个输出文件。MrefBuilder是一个随Sandcastle安装的命令行工具。它生成的输出文件通过XslTransform命令行工具转换成一个叫做reflection.xml的文件。reflection.xml文件包含所有文档数据,但不提供显示细节。 
  MrefBuilder完成工作后,立即由Build Assembler接手处理。Build Assembler可由命令行工具BuildAssembler启动。它利用由MrefBuilder生成的数据(reflection.xml)和任何代码注释(保存在独立的XML文件中),生成按逻辑分组的HTML文件。HTML Help Compiler再利用这些HTML文件生成最终结果。 
  该工具并未限制你一次处理一个汇编。如果你需要处理几个汇编代码,你必须深入了解Sandcastle配置文件。它是一个包含建立帮助文件主题所需步骤的XML文件。
  Sandcastle生成的输出结果具有以下特点: 
Ø         类似于MSDN布局的界面。 
Ø         自动生成索引项、内容项目表、主题块和页面布局,提高一致性和熟悉程度。
Ø         自动生成语法宣称部分。 
Ø         自动生成继承表。 
Ø         代码彩色化。 
Ø         提供多种风格和语言选择,终端用户可从中选择自己最喜欢的形式。 
Ø         输出结果以HTML和CSS形式显示,微软承诺将来提供更多选择。
二、软件使用
  软件的使用方式大致有以下5种:
(1)使用Sandcastle原始的命令行方式
(2)Sandcastle Help File Builder
(3)SandcastleGUI
(4)Sandcastle CHM编译BAT脚本和配置实用工具
(5)DocProject 
 文章以第(2)种为例,介绍Sandcastle的使用
  1、关于生成文档代码注释的规范:
  在源代码文件中,具有规范格式的注释可用于指导工具Sandcastle.msi根据这些注释和它们后面的源代码元素生成 XML。使用这类语法的注释称为文档注释 (documentation comment)。这些注释后面必须紧跟用户定义类型(如类、委托或接口)或者成员(如字段、事件、属性或方法)。XML 生成工具称作文档生成器 (documentation generator)。由文档生成器产生的输出称为文档文件 (documentation file)。文档文件可作为文档查看器 (documentation viewer) 的输入;文档查看器Sandcastle是用于生成类型信息及其关联文档的某种可视化显示的工具。
  新的代码注释规范需要使用以三个斜杠 (///) 开始注释,这些注释后面必须紧跟它们所注释的用户定义类型(如类、委托或接口)或者成员(如字段、事件、属性或方法).对注释解说需要使用有效的xml标记。
部分标记如下: 
   
2、下载并安装
  --- Sandcastle   http://sandcastle.codeplex.com/   //原始
  --- SHFB(Sandcastle Help File Builder)  http://shfb.codeplex.com/  //文章我们要用到的。
 ①如果之前安装过其它版本,请先卸载后再装。
 ②下载完成后解压,我使用的为SHFBGuidedInstaller_1970版本,得到如下
  
 
打开SandcastleInstaller.exe进入安装界面
 
 
安装相当简单,在连网的环境下,需要的组件会自动提示下载安装。测试时,除了MAML Schema IntelliSense 及MAML Snippet Files选择了跳过没有安装以外,其它全根据提示安装上了。(因为不明白那两个东西是做什么的)。
 
安装完成后,便可以在开始菜单中找到,打开程序,如下
 
 
a.打开软件后首先新建解决方案,注意不要建在桌面等位置,否则生成时会报错。
b.解决方案建成后,在Project Explorer 中右击 Documentation Sources 上右击添加需要生成帮助文档的dll文件。图中①处为我添加的需要生成帮助文档的dll文件
c.底下Content Layout1.content为生成的帮助文档的样式,完全可以不要。
d.选择要生成帮助文档的格式,如图中②处,我要生成html格式的帮助文档。
e.其它设置默认即可,过会底下会做介绍。
f.点击③处开始生成,如图
 
g.生成完成后,会看到提示:
Build completed successfully at 09-09-2013 11:47 下午.  Total time: 00:01:11.3906
即可在Sandcastle解决方案目录下看到Help文件夹,即是生成的帮助文件。
 
h.如果不能编译生成CHM文档或者生成CHM时报错,则需要安装HTML Help Workshop(需要用到其中的hhc.exe文件)
 
3、集成到Visual Studio中
  a.回到Sandcastle安装程序目录 ,打开 InstallResources文件夹,看到以下三个文件
双击最下边的vsix文件,反应一会儿会弹出如下错误,即表示安装成功了:
 
b.现在在解决方案中添加项目,如下
c.选择Documentation-->Sandcastle Help File Builder Project-->确定
d.双击Project Properties 可以设置项目的属性
属性个性化定制主要属性有:
   1.生成属性设置,如需要生成什么类型的文档(可选chm、网站站点等)
   2.文档内容属性设置,如对命名空间的解说。(命名空间在C#代码中是不可以有注释的,故在此可以设置,也可以在项目中新建一个类NamespaceDoc.cs其代码为:
 namespace  TestForHelp
{
///<summary>
///These are the namespace comments for New <c>TestForHelp</c>
///</summary>
[System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
classNamespaceDoc
{ }
}
   3.文档文件的属性设置:如页眉、页脚、版权信息。
e.同样,右击 Documentation Sources 上右击添加需要生成帮助文档的dll文件,可一次添加多个
f.在项目名上(如DocumentationHelp)右击,添加--新建项,可指定项目模板
 
g.所有设置完成后,生成项目,即可得到想要的帮助文档,同样保存在项目下Help文件夹下。
h.再次提醒,如果不能编译生成CHM文档或者生成CHM时报错,则需要安装HTML Help Workshop(需要用到其中的hhc.exe文件)
 参考资料:
 3.使用
Sandcastle 生成 chm 帮助文档
 (使用Sandcastle原始的命令行方式)
 4.软件的帮助文档,讲得很全,但全是英文。

Sandcastle帮助文档生成器使用介绍的更多相关文章

  1. MkDocs项目文档生成器

    简介 安装 我的配置 Chocolatey 简介 - Windows的包管理器 官方网址 安装 注意事项 Python 简介 安装 Pip 简介-Python的包管理器 升级 MkDocs的安装 使用 ...

  2. api的mock开源工具;api文档生成器;api的mock工具;阿里系;其他开源

    django-rest-framework,即drf的api文档,包括自带的文档和其他三方文档,比如swagger.DRF Docs等 https://www.django-rest-framewor ...

  3. PHP文档生成器(PHPDoc)的基本用法

    目录 PHP文档生成器(PHPDoc)的基本用法 PHPDoc概述 安装 PHPDoc注释规范 页面级别的注释 代码级别的注释 生成API文档 额外软件 PHP文档生成器(PHPDoc)的基本用法 P ...

  4. python sphinx(文档生成器)入门

    简介 Sphinx 是一个 文档生成器 ,您也可以把它看成一种工具,它可以将一组纯文本源文件转换成各种输出格式,并且自动生成交叉引用.索引等.也就是说,如果您的目录包含一堆 reStructuredT ...

  5. Hi,给他介绍一款markdown的帮助文档生成器

    当今大多数的团队都实现了前.后端分支.前端与后端的沟通都是通过接口来实现的(一般情况下都是webapi接口).这种情况你肯定需要一个接口查询的帮助文档,这个当然用swagger都可以实现.但做为前端开 ...

  6. IE11新文档模式Edge介绍与评估,及在WebBrowser应用中的使用。

    浏览器模式与文档模式概念是怎么来的? 1.浏览器模式与文档模式概念起源 为了解决兼容性的问题,在IE浏览器(IE8, IE9, IE10)中,引入了浏览器模式和文档模式两个概念,浏览网页时可以通过按F ...

  7. api文档生成器apidoc的安装和使用

    在开发接口的过程中,需要向外发布相应的接口文档.开始的时候使用word来写文档,时间长了发现有几个问题. 1. 编写不方便.每次新增借口的时候都要复制上一个接口,然后再进行修改,一些相同的部分无法复用 ...

  8. rbac介绍、自动生成接口文档、jwt介绍与快速签发认证、jwt定制返回格式

    今日内容概要 RBAC 自动生成接口文档 jwt介绍与快速使用 jwt定制返回格式 jwt源码分析 内容详细 1.RBAC(重要) # RBAC 是基于角色的访问控制(Role-Based Acces ...

  9. ES 文档与索引介绍

    在之前的文章中,介绍了 ES 整体的架构和内容,这篇主要针对 ES 最小的存储单位 - 文档以及由文档组成的索引进行详细介绍. 会涉及到如下的内容: 文档的 CURD 操作. Dynamic Mapp ...

随机推荐

  1. seajs 源码阅读笔记

    代码概览 src目录文件列表如下: 代码以模块化的方式来组织,构建的时候会合并为一个js文件(sea.js 或 sea-debug.js),其中,intro.js和 outro.js 分别是这个js文 ...

  2. Jexus 5.8.2 Beta1发布:为Asp.Net Core进入生产环境提供平台支持

    Jeuxs 5.8.2beta1于7月10日正式发布. 有如下更新: 1,为FastCGI提供KEEP_CONN支持,优化FastCGI工作线程池调度算法: 2,完善反向代理的负载均衡策略,支持“随机 ...

  3. 【转】 Nginx深入详解之多进程网络模型

    [转自]http://blog.chinaunix.net/uid-22312037-id-3974068.html 一.进程模型        Nginx之所以为广大码农喜爱,除了其高性能外,还有其 ...

  4. JedisPool异常Jedis链接处理

    问题现象(jedis-2.1.0.jar) 基于JedisPool管理Jedis对象,通过get方法获取值,出现key对应的value值错误,例如: K V a a b b Jedis.get(“a” ...

  5. Homework_4 四则运算 - C#版

    题目要求 :http://www.cnblogs.com/gdfhp/p/5311937.html 结对同伴: 姓名:胡仕辉   学号:130201225   博客地址:http://www.cnbl ...

  6. 如何给开源的DUILib支持Accessibility

    最近的工作是给开源的DUILib支持Accessibility, 一些经验记录并分享下. 微软的Accessibility其实Windows平台上一个挺重要的东西, 尽管在国内不受重视,但是如果你的软 ...

  7. XP之后Windows的一些变化

    看到很多Windows开发人员,尤其是C++程序员思维还是停留在XP操作系统,当然根据工作是否需要新知识 ,这本身没有错.但是实际上Vista之后的Win7, 再之后的Win8 ,Windows已经发 ...

  8. Windows Azure Virtual Machine (25) 使用SSH登录Azure Linux虚拟机

    <Windows Azure Platform 系列文章目录> 本文介绍内容适合于Azure Global和Azure China 为什么使用SSH登录Azure Linux虚拟机? 我们 ...

  9. 消息队列-Kafka学习

    Kafka是一个分布式的消息队列,学习见Apache Kafka文档,中文翻译见Kafka分享,一个简单的入门例子见kafka代码入门实例.本文只针对自己感兴趣的点记录下. 1.架构 Producer ...

  10. Java-继承,多态练习0922-06

    编写一个Shape类,具有属性:周长和面积: 定义其子类三角形和矩形,分别具有求周长的方法. 定义主类E,在其main方法中创建三角形和矩形类的对象, 并赋给Shape类的对象a.b,使用对象a.b来 ...