为 VS2008 和 VS2010 创作/集成 API 帮助






4.73/5 (11投票s)
为自己的 API 创建上下文帮助文件。
引言
不时地,我需要为组织内外其他开发人员使用的 API 进行开发。我一直希望能够将其打包成带有精美文档和专业外观的帮助文件。通过一些免费工具,生成专业外观的帮助文件相当容易,但我似乎总是在将其集成到 VS IDE 时遇到困难。在本文中,我将展示如何为 VS2008 和 VS2010 的新 Help3.x 格式解决这个问题。
您需要的工具
- GhostDoc
- Sandcastle
- Sandcastle GUI
- MSHC Migrate Utility
- Visual Studio SDK (VS2010)
- Visual Studio SDK (VS2008)
当然,您还需要 Visual Studio 2008/2010 中的一个或两个。
示例 API
public class API
{
public API()
{
}
public string Foo( string s )
{
return "Foo got " + s;
}
}
GhostDoc
GhostDoc 项目是一个免费的 VS 插件,它极大地简化了在 API 源代码中生成 XMLDoc 注释的过程。当您定义和实现类时,只需在 VS 中键入三个“/
”即可轻松创建这些注释,如下所示:
/// <summary>
///
/// </summary>
public class API
{
/// <summary>
///
/// </summary>
public API()
{
}
/// <summary>
///
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
public string Foo( string s )
{
return "Foo got " + s;
}
}
这非常有帮助,但是为了填写所有这些值,可能需要进行大量的手动编辑。然后,在注释块中记住类型引用的格式等问题也一直存在。
GhostDoc 通过在 VS 中提供“Document this”上下文菜单来提供帮助。

结果是更加友好的
/// <summary>
/// Initializes a new instance of the <see cref="API"/> class.
/// </summary>
public API()
{
}
嵌入的 <see.../>
标签将在生成文档后生成指向文档其他部分的实时链接引用(而不仅仅是文本)。GhostDoc 的另一个优点是,如果存在基类或接口,它会智能地从中提取文档。
/// <summary>
/// Returns a <see cref="System.String"/> that represents this instance.
/// </summary>
/// <returns>
/// A <see cref="System.String"/> that represents this instance.
/// </returns>
public override string ToString()
{
return base.ToString();
}
Sandcastle
Sandcastle 项目将帮助您获取这些文档注释并将其转换为 API 文档。首先,为了生成文档,您需要在项目“生成输出”选项中生成 XML 文档文件。

这个生成的文件(以及实际的 DLL 文件)是 Sandcastle 完成其工作所需的输入。打开 Sandcastle Help File Builder GUI 并创建一个新项目。

现在我们将从 Visual Studio 生成的 XML 文件添加到项目中。

如下图所示:

要为 VS2010 生成帮助文件,请选择 HelpFileFormat “MSHelpViewer
”。

这将导致 Sandcastle 生成一个文件(默认情况下为:Documentation.mshc)。
要为 VS2008 生成帮助文件,请选择“MSHelp2
”。这将导致 Sandcastle 生成一系列文件(*.HxS、*.HxC 等)。
这些是我们现在需要集成到 IDE 中的原始帮助文件。
既然我们已经到了这一步,我想指出您也可以选择“HtmlHelp1
”来生成经典的 *.chm(编译的 HTML)帮助文件。但是,这不能集成到任何 IDE 中,但它可用于与代码一起分发,例如在 MSI 中,或者通过“开始”菜单项访问。第四个选项是生成 HTML 文档。如果您想将文档托管在 Web 服务器上或将其压缩以与 API 一起分发,这是 Sandcastle 的另一个选项。
MSHC Migrate Utility
这是 Helpware 的一款商业工具,可让您从其他格式迁移到 VS2010 的新 Help3.x 格式。它不是免费的。我在此列出它,仅为完整性。
要将我们生成的 *.mshc 文件集成到 VS2010 中,我们只需要一个帮助清单文件(*.msha),如下图所示。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>My API's Manifest</title>
</head>
<body class="vendor-book">
<div class="details">
<span class="vendor">Me</span>
<span class="locale">en-us</span>
<span class="product">My API</span>
<span class="name">My API</span>
</div>
<div class="package-list">
<div class="package">
<span class="name">TestAPI</span>
<a class="current-link" href="Documentation.mshc">Documentation.mshc</a>
</div>
</div>
</body>
</html>
这里重要的条目是确保 Package-list 部分指向您生成的文档文件(*.mshc),并且 <span ...>TestAPI</span>
值指向您 API 的最外层命名空间。将此文件保存在与 *.mshc 文件相同的目录中,并将其命名为“helpcontentsetup.msha”。
现在您已准备好将其与 VS2010 集成。您需要以管理员权限启动 VS2010(右键单击图标或菜单,然后选择“以管理员身份运行”)。您会知道您正在以管理员身份运行,因为 VS 的标题栏会显示“(Administrator)”。接下来,选择“帮助 -> 管理帮助设置”以启动帮助库管理器,如下图所示。

选择“从磁盘安装内容”并浏览到您新创建的清单文件“helpcontentsetup.msha”,然后选择它。这将显示您的新 API 文档,选择“添加”,然后单击“更新”按钮将其集成到已安装的帮助文件中,如下图所示。

瞧!您的 API 现在已注册到 VS2010 的本地帮助文件中。

要与 VS2008 集成,我们需要创建一个 VS 扩展安装程序。向您的解决方案添加一个新项目(在“其他项目类型 -> 可扩展性”下)——一个新的帮助集成向导项目。这可以是设置项目或合并模块。在向导中,只需逐步完成选项,当您到达“源文件”时,添加我们用 Sandcastle 生成的 *.HxS 文件。
生成并安装生成的 MSI 将新的帮助文件添加到本地安装的帮助中。
请注意,在 VS2008 中,首次安装 MSI 后访问帮助系统时,它需要更新自身,这将需要几分钟时间(在我看来是相当长的时间……叹气)。

有关所提及工具的更多文档,可在其各自的网站上找到。
历史
- 2010 年 5 月 19 日:初始帖子