如果Delphi 无法提供程序集,如何为Delphi 构建Sandcastle Microsoft Help 2.0 文档?

How Sandcastle Microsoft Help 2.0 documentation can be built for Delphi if Delphi can not provide assembly?

据我了解,Windows 程序有 3 种帮助格式:

  1. hlp - 非常旧的格式,来自 RichText 源,不再支持
  2. chm - 仍受支持的格式,来自 htm 来源
  3. Microsoft Help 2.0 - 最现代的格式,被 Visual Studio、Embarcadero Delphi 和许多其他程序使用。

我正在尝试构建 Microsoft Help 2.0 测试项目 https://github.com/misiam/Sandcastle-Sample with SandCastle https://github.com/EWSoftware/SHFB。它是我所知道的唯一的 Help 2.0 编辑器(至少是开源的)。甚至 HelpAndManual 程序也不支持 Help 2.0 格式的输出。但是这个SandCastle测试项目报错:

SHFB: Error BE0065: BUILD FAILED: Project assembly does not exist: D:\Help\Sandcastle-Sample-master\SandcastleSample\SandcastleSample.Samples\bin\Debug\SandcastleSample.Samples.dll

所以 - 我猜想,SandCastle 需要一些 .NET 程序集(dll 或 exe),它可以为其提供内省并可以从中提取某种文档。但是如果我正在制作 Delphi 程序并且不想从我的 exe 文件中提取文档,那么我应该做什么?我怎样才能让 SandCastle 不读入任何二进制文件? Embarcadero 和许多其他 Delphi 组件供应商能够在没有这种自省的情况下生成他们的帮助文件,所以,我想,我也应该能够做到这一点。

正如其他人已经评论的那样,HTML帮助 (HH) 也称为编译帮助模块 (.chm) 已有 20 年历史,但可用 运行 Windows 10。运行时附带 Windows 95 及更高版本。您知道 - 自 HTML 帮助 (.chm) 以来,Microsoft 已经创建了其他帮助系统,但它们与各种系统相关联。

HTML帮助 "maintenance mode" 已经好几年了。预计不会有新功能,并且从现在开始只会进行关键更新。据我所知,Microsoft 没有开发新的帮助系统。

我想您可以猜到 CHM 将在这里存在很长时间,因为没有替代品。 MS Help 2(使用的扩展参见:*.HXS)仅适用于 VS 2002/2003/2005/2008,所有开发都已停止。一些 Delphi 版本也带有基于 *.hxs 的帮助系统。

MS Help Viewer (.mshc) 很有前途但当时难以管理。它主要是为像 Microsoft 这样从数据库编写帮助代码的公司制作的。

您会发现一些查看器和工具,例如 MshcMigrate让您从 .CHM 和 .HxS -> .mshc.

一些进一步的信息(手工概念内容):

Sandcastle 旨在根据反射信息文件中的一组 XML 注释和 API 信息记录代码。因此,它至少需要一个程序集才能生成包含 API 文档的帮助文件。如果您不包括至少一个程序集,其命名空间至少包含一个 public class,则无法生成帮助文件。

不过,您可以使用Additional Content Only Plug-In to produce a help file based on conceptual content alone. To do so, add the plug-in to the project via the Plug-Ins project property category, add conceptual content到项目中,并构建帮助文件。有关如何使用概念性内容的详细信息,请参阅概念性内容主题。

如果需要,您可能需要打开 small example copied from