好的,有几个技巧可以让它按需要工作;感谢help-info.de对Link
元素的启发。
首先,在 common docs 文件夹中,创建CommonDoc.targets
:
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<ItemGroup>
<Folder Include="common\" />
</ItemGroup>
<ItemGroup>
<ContentLayout Include="$(CommonContentDir)100-common.content">
<Link>common\100-common.content</Link>
</ContentLayout>
</ItemGroup>
<ItemGroup>
<None Include="$(CommonContentDir)performance.aml">
<Link>common\performance.aml</Link>
</None>
<None Include="$(CommonContentDir)security.aml">
<Link>common\security.aml</Link>
</None>
</ItemGroup>
</Project>
接下来,编辑主 shfbproj 文件并在现有元素下方添加以下PropertyGroup
内容:
<PropertyGroup>
<CommonContentDir>..\..\Doc\</CommonContentDir>
</PropertyGroup>
这是从带有 shfbproj 的文件夹到 common docs 文件夹的相对路径。
还在现有元素上方添加以下Import
内容:
<Import Project="$(CommonContentDir)CommonDoc.targets" />
最后(这部分您可以在 GUI 中执行),将现有.content
文件拆分为多个文件,以便您希望在公共内容之前出现的任何内容都以低于 100 的数字命名,之后以高于 100 的数字命名。 (显然,多个内容文件在合并之前按字母顺序排序。)
(如果大多数内容通常会添加到公共内容之前,您可以为公共内容使用不同的数字,但对于我来说,情况正好相反。)
该CommonContentDir
物业有点烦人;我想使用$(MSBuildThisProjectDir)
,但似乎 SHFB 构建无法识别这一点,而是尝试在 shfbproj 的主文件夹中查找文件。
此方法的另一个缺点是,当您想将新文件添加到公共主题时,您必须CommonDoc.targets
手动编辑该文件。但是一旦你这样做了,它就会自动出现在每个引用该文件的帮助文件中,而无需单独更新每个 shfbproj。