Sandcastle Help File Builder

最近我和其它部门配合,给他们提供一个外部服务,既然是提供给别人用的,当然需要告诉别人怎么来用你的服务,这也就是我们常说的技术文档。各组之间传递技术文档的方式有很多种。这里我知道的大概有以下几种:

第一:口头传递技术文档,也就是没有实质的文档资料,口头说明一下即可,这种情况局限于沟通起来非常方便的开发团队中,例如就坐在一个办公间等等。

第二:以文本形式,把如何使用的技术点记录下来,这个方法有什么用,那个属性是做什么的等等,这种方式无疑是表述最清楚的,单独的文档中你甚至可以用图的方式教导使用者,但缺点就是维护起来相当麻烦,而且费时。如果哪天服务的实现有了比较大的改变,那更新这个文档就非常麻烦了。

第三:利用工具,配合.net的注释来自动生成帮忙文件,这里就是本文所提到的Sandcastle Help File Builder了,后面简称为SHFB。它是Sandcastle的一个可视化工具,用户不用记住大量命令来完成文档的编译。它最终可以生成例如chm文件,内容风格可选MSDN,让使用都可以感到非常亲切。



实现SHFB的软件环境:
首先:需要安装Sandcastle,大家可以去搜索下载最新版本。
其实:就是chm文件的制作软件HTML Help Workshop。这个最新版本是1.3,有些所没有更新了。这两个软件最个安装在默认路径下,否则在shfb中需要设置这两个参数。



实现步骤:
第一:把生成帮助的工程的属性做下修改,右键工程,属性,生成,下面的输出框中有一个生成XML文件选项,打勾。文件会把工程中所有类,方法,属性上的注释保存下来。
第二:启动shfb,然后新建一个工程,名称可以随意指定。这里主要说说几个比较重要的属性设置问题:

1:Documentation Sources,是需要生成详细注释的工程。如果最外层工程有对其它工程的引用,而且我们希望看到所有引用的类,就需要把所有被引用的工程都添加进来。否则用户点击外层类时,被引用的类上面不会有链接,即我们看不到被引用类的内容。
2:References:设置一些工程的依赖项。
3:FrameworkVersion: 选择对应的Framework版本 ,最新版的shfb的默认设置是.net 3.5。
4:HelpFileFormat : 选择需要生成的文档的格式. 这里选定的格式要在下面对应的地方进行设置。对于不同的格式还需要安装不同的编译工具 Helpe1x(chm)需要安装Microsoft HTML Help,Helper2x(Hxs)需要安装 Hxcomp.
5:NamespaceSummaries: 选择需要生成的命名空间,直接点击开窗选择。

6:Lanugages :语言,如果文档中有中文,最好选择中文。
7:CopyrightHref:版权链接,例如http://www.xxx.com/
8:CopyrightText: 版权文字 ,xx公司所有
9:HelpTitle: 文档标题
10:HtmlHelpName:文档生成文件名称
11:PresentationStyle: 支持vs 2005,Prototype等格式 ,根据自己需要选择
12: OutputPath:生成路径,即最后chm文件存放位置,当然除了CHM还有些其它文件。
13:HtmlHelp1xCompilerPath:可以自定义html help的安装路径。
14:SandcastlePath:可以自定义sandcastel的安装路径。

到此,我们就可以点击软件窗口上的buile the help file按钮,就可以按预期进行生成文档了。如果没有特殊情况,运行期间不会发生任何错误,我们会成功的在输出目录中发现chm文件,但有些情况还是需要注意一下的:

第一:在添加Documentation Sources时,不能在路径中包含.h的字样,例如.Hotel.Host\bin这种路径是不合法的,最后hhc软件会报错。

第二:References项中不能存在重复项。

如何正常编写注释,来生成详细可用的帮助文档?

1:类的注释。一般分为summary以及remarks两部分。
代码
/// <summary>
/// 短信上行服务类
/// </summary>
/// <remarks>
/// 2010.07.09: 创建. min.jiang <br/>
/// 2010.07.09: 开发短信上行服务 <br/>
/// </remarks>
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall,
ConcurrencyMode = ConcurrencyMode.Multiple,
IncludeExceptionDetailInFaults = true)]
public class HotelCommentWcf : IHotelCommentWcf



2:方法的注释。除了类上面的summary,remarks,还可以加上example,在其中的code标签中加上实例代码等等。
代码
/// <summary>
/// 平台邀请用户进行手机点评方法
/// </summary>
/// <param name="request">用户点评信息</param>
/// <returns>点评处理结果</returns>
/// <remarks>
/// 会把点评发送结果发送到用户手机中
/// </remarks>
/// <example>
/// <code>
/// HotelCommentWcfClient target = new HotelCommentWcfClient();
/// Elong.Hotel.ServiceAgent.Test.HotelCommentWcf.HotelCommentRequestInfo request = null;
/// request = new Elong.Hotel.ServiceAgent.Test.HotelCommentWcf.HotelCommentRequestInfo();
/// request.HotelOrderLast4 = "3716";
/// request.Mobile = "**********";
/// request.RecommentContent = "aaa";
/// Elong.Hotel.ServiceAgent.Test.HotelCommentWcf.ResponseBaseInfo actual;
/// actual = target.SMGAndComment(request);
/// </code>
/// </example>
public ResponseBaseInfo SMGAndComment(HotelCommentRequestInfo request)

3:属性的注释。这个是最简单的,一般有summary块就行了,其中有一个value块,可以针对默认值进行描述。



总结:Sandcastle Help File Builder能够非常好的和VS合作,制作出MSDN风格的帮忙文档,即有效的对项目保存了技术文档又降低了沟通成本。

http://www.cnblogs.com/ASPNET2008/archive/2010/07/09/1774459.html

你可能感兴趣的:(builder)