Sandcastle生成帮助文档

http://www.cnblogs.com/net515/p/3311584.html

Sandcastle帮助文档生成器使用介绍

一、软件介绍

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其代码为:

1 namespace  TestForHelp
2   {
3     ///<summary>
4    ///These are the namespace comments for New <c>TestForHelp</c>
5    ///</summary>
6    [System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
7       classNamespaceDoc
8        {  }
9   }

3.文档文件的属性设置:如页眉、页脚、版权信息。

e.同样,右击 Documentation Sources 上右击添加需要生成帮助文档的dll文件,可一次添加多个

f.在项目名上(如DocumentationHelp)右击,添加--新建项,可指定项目模板

g.所有设置完成后,生成项目,即可得到想要的帮助文档,同样保存在项目下Help文件夹下。

h.再次提醒,如果不能编译生成CHM文档或者生成CHM时报错,则需要安装HTML Help Workshop(需要用到其中的hhc.exe文件)

参考资料:

1.使用Sandcastle帮助文档生成流程

2.利用SandCastle生成帮助文档

3.使用
Sandcastle 生成 chm 帮助文档
 (使用Sandcastle原始的命令行方式)

4.软件的帮助文档,讲得很全,但全是英文。

时间: 2024-11-07 01:04:26

Sandcastle生成帮助文档的相关文章

?生成chm文档工具- Sandcastle -摘自网络

Sandcastle是微软官方的文档生成工具,NDoc开发停止后,这个貌似也是唯一的一个这方面的工具.它从dll文件及其xml注释文件能够 生成完整的帮助文档,支持多种生成格式(Helpe1x:chm, Helper2x:Hxs, Website,HelperView),结合新发布的Sandcastle Help File Builder可视化工具,整个生成过程十分简单,而且SHFB工具看起来很强大,不仅能够直接配置生成文档的各个属性,而且还支持很灵活的扩展设置,为 我们提供完美的.NET类库文

vs2010代码注释自动生成api文档

最近做了一些接口,提供其他人调用,要写个api文档,可是我想代码注释已经写了说明,能不能直接把代码注释生成api?于是找到以下方法 环境:vs2010 先下载安装Sandcastle 和Sandcastle Help File Builder 下载地址 http://sandcastle.codeplex.com/ http://shfb.codeplex.com/ 其中Sandcastle Help File Builder安装较复杂,安装红框内的即可 安装完成后,然后让要使用的项目输出xml

我的设计接口总结以及生成帮助文档

前言:在工作发现接口至关重要,特别需要把接口的注释写清楚,能调用的同事知道这个接口是干嘛用的,要传递什么参数等,在这里我做了一个简单的接口并生成帮助帮助,供大家相互学习,有好的可以提出来我继续改进. 第一步:建立一个用户接口(明确这个接口的作用) 按照Add,Delete,Update,Get模式来定义接口的方法(我个人觉得尽可能的重载) 第二步:方法中写出尽可能详尽的注释 按照方法实现的功能,参数意思,异常,备注,返回值等来写 第三步:接口中如果出现参数为类型的时候千万不要用1,2这样的数值代

.net 提取注释生成API文档 帮助文档

提取注释生成API文档 一.前言 在多人协作的项目中,除了良好的代码规范外,完整的API文档也相当重要.通过文档我们快速了解系统各模块的实际接口,及其使用场景.使用示例,一定程度上降低沟通成本,和减少后期维护中知识遗失等风险. 对于.Net,我们可以直接将类.方法等的注释直接转为API文档,极大地减少文档维护的工作量,同时也能反向提高大家的注释质量. 下面我们使用.Net唯一的注释生成API文档工具——Sandcastle和Sandcastle Help File Builder来实现API文档

.Net魔法堂:提取注释生成API文档

一.前言 在多人协作的项目中,除了良好的代码规范外,完整的API文档也相当重要.通过文档我们快速了解系统各模块的实际接口,及其使用场景.使用示例,一定程度上降低沟通成本,和减少后期维护中知识遗失等风险. 对于.Net,我们可以直接将类.方法等的注释直接转为API文档,极大地减少文档维护的工作量,同时也能反向提高大家的注释质量. 下面我们使用.Net唯一的注释生成API文档工具——Sandcastle和Sandcastle Help File Builder来实现API文档自动化吧! 二.工具 S

用Aspose.Words for .NET动态生成word文档中的数据表格

1.概述 最近项目中有一个这样的需求:导出word 文档,要求这个文档的格式不是固定的,用户可以随便的调整,导出内容中的数据表格列是动态的,例如要求导出姓名和性别,你就要导出这两列的数据,而且这个文档不是导出来之后再调整而是导出来后已经是调整过了的.看到这里,您也许马上想到用模板导出!而且.NET中自带有这个组件:Microsoft.Office.Interop.Word,暂且可以满足需求吧.但这个组件也是有局限性的,例如客户端必须装 office组件,而且编码复杂度高.最麻烦的需求是后面那个-

读thinking in java的收获(二) --eclipse生成javadoc文档

最开始学习java语言的时候学过生成javadoc不过当时只是用windows命令行生成.读了这里的javadoc温故而知新发现其实我们做的项目就用到了一些注释,只是没有用eclipse 生成这份文档,通过查阅,最终补全了这份知识. 一.书中的代码: <pre name="code" class="java">//:object/HelloDate.java package unit2; import java.util.Date; /** * The

SpringBoot+rest接口+swagger2生成API文档+validator+mybatis+aop+国际化

代码地址:JillWen_SpringBootDemo mybatis 1. 添加依赖: <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>${mybatis.version}</version> </dependency> &

利用sphinx为python项目生成API文档

sphinx可以根据python的注释生成可以查找的api文档,简单记录了下步骤 1:安装 pip install -U Sphinx 2:在需要生成文档的.py文件目录下执行sphinx-apidoc -F -o ./doc ./domain/model/ 在当前目录下新建doc目录,api文档的文件夹就在此目录下,./domain/model/ 表示需要生成api文档的目录. 3:进入doc目录 修改conf.py文件 设置代码路径为sys.path.insert(0, os.path.ab