Есть ли способ импортировать внешние файлы проекта или темы в SHFB? - PullRequest
1 голос
/ 24 сентября 2019

Я хочу создать несколько отдельных выходных файлов CHM (для отдельных библиотек, поэтому у меня есть отдельные shfbproj для каждой), но у них есть несколько общих концептуальных тем.

Я бы хотелхотелось бы иметь возможность хранить файлы .aml для этих тем в одном месте, а затем импортировать их в каждый из проектов, чтобы избежать дублирования.

В идеале мне бы хотелось иметь общий .contentтакже поместите файл в это центральное расположение и импортируйте его как дочерние элементы определенного родительского тематического узла в файл .content «реального» проекта, чтобы избежать его дублирования.

Есть ли способ сделать это?Попытка добавить существующие файлы в проект приводит либо к созданию копий файлов, либо к невозможности загрузки проекта, если его редактировать вручную, чтобы указывать на файлы вне папки проекта.

(я также пытался создать shfbprojдля общего контента и затем ссылки на это в «реальном» проекте, но это, кажется, не имеет никакого эффекта.)

1 Ответ

0 голосов
/ 25 сентября 2019

Решение в значительной степени зависит от ваших требований и предполагаемой структуры вашего сгенерированного файла справки.Использование надстройки Visual Studio и автономного графического интерфейса разработчика файла справки Sandcastle (SHFB) отличается.

Как вы можете видеть на скриншоте CHM, над документацией моего класса BMI есть глоссарий.Эта тема не находится в проекте, но находится в другом каталоге.

CHM help file

Проекты файлов справки также поддерживают связанные элементы.Связанные элементы - это файлы, которые отображаются в структуре папок текущего проекта, но физически находятся в расположении за пределами структуры папок текущего проекта.Примером может быть разделение файла токена между несколькими проектами.Если файл редактируется в одном проекте, эти изменения отражаются в других проектах, в которых он является связанным или фактическим элементом при построении этих проектов.

Связанные элементы можно добавить вVisual Studio в обычном порядке.Выберите параметр для добавления существующего элемента и в диалоговом окне выбора файла вместо нажатия кнопки «Добавить» щелкните стрелку раскрывающегося списка на нем и выберите параметр «Добавить как ссылку» (как показано ниже).

Screenshot of Solution Explorer and add item dialog

Я думаю, что это возможность для вашего дополнительного контента.

В качестве следующего шага вам нужно дважды щелкнуть, например, файл ContentLayout.content и отредактировать структурувручную.

enter image description here

Дополнительная информация, цитируемая из справки Sandcastle File File Documentation:

Если у вас нетVisual Studio, единственный способ создать связанные элементы - это вручную редактировать проект в текстовом редакторе.Для этого добавьте элемент сборки в группу элементов.Это делается путем добавления элемента, названного в честь действия сборки (то есть токенов для файла токенов).Атрибут Include указывает на относительный путь к файлу, который обычно находится вне структуры папок текущего проекта.Добавьте элемент Link, вложенный в элемент сборки, и задайте в качестве значения его свойства относительный путь элемента в текущем проекте создания файла справки.Например:

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

В приведенном выше примере создается связанный файл токенов.Его физическое расположение на один уровень выше от папки проекта конструктора файлов справки в другой папке проекта (.. \ SomeOtherProject \ Tokens) .Его виртуальное местоположение в текущем проекте будет находиться в папке с именем. \ Tokens.

Связанные элементы будут иметь опцию Удалить, а не Удалить.Это удаляет их из проекта, но оставляет на диске в исходном расположении, поскольку они могут принадлежать другому проекту.

...