一、软件介绍
      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. Web Essentials之Bundling

    返回Web Essentials功能目录 本篇目录 介绍 样例文件 已知行为 介绍 这篇要讲的是Bundling,我看很多人把它翻译为捆绑,如果你喜欢你也可以这么理解,我是不太习惯,我还是喜欢它为bu ...

  2. 如何通过自定义注解实现AOP切点定义

    面向切面编程(Aspect Oriented Programming, AOP)是面向对象编程(Object Oriented Programming,OOP)的强大补充,通过横切面注入的方式引入其他 ...

  3. [.net 面向对象程序设计进阶] (5) Lamda表达式(一) 创建委托

    [.net 面向对象程序设计进阶] (5) Lamda表达式(一)  创建委托 本节导读: 通过学习Lambda表达式,学会创建委托和表达式目录树,深入了解Lambda的特性,让你的代码变的更加清晰. ...

  4. 关于大型网站技术演进的思考(十三)--网站静态化处理—CSI(5)

    讲完了SSI,ESI,下面就要讲讲CSI了 ,CSI是浏览器端的动静整合方案,当我文章发表后有朋友就问我,CSI技术是不是就是通过ajax来加载数据啊,我当时的回答只是说你的理解有点片面,那么到底什么 ...

  5. 如何为编程爱好者设计一款好玩的智能硬件(九)——LCD1602点阵字符型液晶显示模块驱动封装(下)

    六.温湿度传感器DHT11驱动封装(下):如何为编程爱好者设计一款好玩的智能硬件(六)——初尝试·把温湿度给收集了(下)! 七.点阵字符型液晶显示模块LCD1602驱动封装(上):如何为编程爱好者设计 ...

  6. 为什么我的新项目选择了Quick-cocos2d-x

    混Quick社区快一周了,还是决定分享一下我选择Quick的原因. 一是向大家介绍一下我自己,同时也希望给大家提供一个参考首先,向大家介绍一下我自己姓名,年龄,性别这些都不重要了.我是一名程序员,在游 ...

  7. 做NavMesh相关工作时收集的一些文章

    三角形拾取 http://www.blackpawn.com/texts/pointinpoly/default.htmlCS NavMesh使用手册https://developer.valveso ...

  8. Java对象序列化---转载

    1.概念 序列化:把Java对象转换为字节序列的过程. 反序列化:把字节序列恢复为Java对象的过程. 2.用途 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个 ...

  9. 知方可补不足~SqlServer自动备份数据库及清理备份文件

    回到目录 对于SQLSERVER这个关系型数据库来说,为了保持数据的安全,备份是必须的,当你的一个误操作导致数据丢失,这可能是灾难性的,是不被允许发生的,这时,我们必须要做好定期的备份工作,如我们可以 ...

  10. EF架构~关系表插入应该写在事务里,但不应该是分布式事务

    回到目录 这个标题很有意思,关系表插入,就是说主表和外表键在插入时,可能会有同步插的情况,如在建立主表时,扩展表需要同步完成数据的初始化工作,而对于多表插入时,我们为了保证数据的一致性会针它写在事务中 ...