c# - 有什么方法可以在 SHFB 中导入外部项目或主题文件?

标签 c# chm sandcastle shfb

我想生成一些单独的输出 CHM 文件(对于单独的库,所以我有一个单独的 shfbproj 为每个),但它们有许多共同的概念主题。

我希望能够把 .aml这些主题的文件放在一个地方,然后将它们导入到每个项目中,以避免重复。

理想情况下,我希望有一个共同的 .content文件也在这个中心位置,并将其作为“真实”项目的 .content 中特定父主题节点的子节点导入文件,以避免重复。

有没有办法做到这一点?尝试将现有文件添加到项目会导致创建文件的副本,或者如果手动编辑以指向项目文件夹之外的文件,则使项目无法加载。

(我还尝试为公共(public)内容制作 shfbproj,然后在“真实”项目中引用它,但这似乎没有效果。)

最佳答案

解决方案在很大程度上取决于您的要求和生成的帮助文件的预期结构。使用 Visual Studio 加载项和独立的 SandcaSTLe 帮助文件生成器 (SHFB) GUI 是不同的。

正如您在 CHM 屏幕截图中看到的那样,我的 BMI 类文档上方有一个词汇表主题。该主题不在项目中,而是在另一个目录中。

CHM help file

帮助文件构建器项目也支持链接项目。链接项是出现在当前项目的文件夹结构中但物理上位于当前项目文件夹结构之外的位置的文件。一个例子是在多个项目之间共享一个 token 文件。如果在一个项目中编辑文件,则这些更改会反射(reflect)在其他项目中,在这些项目中,它是链接或实际项目。

链接项目可以以通常的方式在 Visual Studio 中添加。选择添加现有项目的选项,然后在文件选择对话框中,而不是单击添加按钮,单击其上的下拉箭头并选择添加为链接选项(如下所示)。

Screenshot of Solution Explorer and add item dialog

我认为这是您的附加内容的可能性。

作为下一步,您需要双击您的例如ContentLayout.content文件并手动编辑结构。

enter image description here

从 SandcaSTLe 帮助文件生成器文档中引用的附加信息:

如果您没有 Visual Studio,则创建链接项的唯一方法是在文本编辑器中手动编辑项目。为此,请将构建项目添加到项目组。这是通过添加一个以构建操作命名的元素(即 token 文件的 token )来完成的。 Include 属性指向文件的相对路径,该路径通常位于当前项目的文件夹结构之外。添加嵌套在构建项中的链接元素,并将其属性值设置为当前帮助文件构建器项目中项的相对路径。例如:

<Tokens Include="..\SomeOtherProject\Tokens\SharedTokensFile.tokens">
  <Link>Tokens\SharedTokens.tokens</Link>
</Tokens>

上面的示例创建了一个链接的 token 文件。它的物理位置是另一个项目文件夹 (..\SomeOtherProject\Tokens) 中帮助文件构建器项目文件夹的上一级。它在当前项目中的虚拟位置将位于名为 .\Tokens 的文件夹中。

链接的项目将具有“删除”选项,而不是“删除”选项。这会将它们从项目中删除,但会将它们保留在磁盘上的原始位置,因为它们可能属于另一个项目。

关于c# - 有什么方法可以在 SHFB 中导入外部项目或主题文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58072601/

相关文章:

c# - 装箱在 C# 和 VB 中的行为不同

html - 显示帮助文件的推荐方式是什么?

html - 如何将视频文件包含到CHM文件中?

css - CHM 与 css+背景

html - 在 SandcaSTLe Help File Builder 的单个构建中创建各种帮助格式

visual-studio-2012 - 单独的 TFS 构建,不包括单个项目

c# - 如何创建一个在统一中充当按钮的模型?

c# - 如何将 WPF 数据网格内的文本框数据绑定(bind)到 View 模型中的属性?

c# - Outlook 加载项教程?