有没有办法在SHFB中导入外部项目或主题文件?

问题描述 投票:1回答:1

我想产生许多单独的输出CHM文件(对于单独的库,所以我为每个库都有单独的shfbproj,但是它们具有许多共同的概念性主题。

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

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

有什么办法吗?尝试将现有文件添加到项目中会导致创建文件副本,或者如果手动进行编辑以指向项目文件夹之外的文件,则使项目无法加载。

((我也尝试过为通用内容制作一个shfbproj,然后在“真实”项目中引用它,但这似乎没有效果。)

c# sandcastle shfb
1个回答
0
投票

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

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

CHM help file

帮助文件构建器项目也支持链接的项目。链接的项目是出现在当前项目的文件夹结构中的文件,但实际上位于当前项目的文件夹结构之外的位置。一个示例是在多个项目之间共享令牌文件。如果在一个项目中编辑了文件,则这些更改将在其他项目中反映出来,在这些项目中,这些更改是链接或实际项目。

可以按常规方式在Visual Studio中添加

Linked Items。选择添加现有项目的选项,然后在文件选择对话框中,而不是单击“添加”按钮,单击其上的下拉箭头,然后选择“添加为链接”选项(如下所示)。

Screenshot of Solution Explorer and add item dialog

我认为这是您添加其他内容的可能。

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

enter image description here

Sandcastle帮助文件生成器文档中引用的其他信息:

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

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

上面的示例创建一个链接的令牌文件。它的物理位置比另一个项目文件夹(.. \ SomeOtherProject \ Tokens)中的帮助文件生成器项目文件夹高一层。它在当前项目中的虚拟位置将位于名为。\ Tokens的文件夹中。

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

© www.soinside.com 2019 - 2024. All rights reserved.