Генерация HTML-документации автоматически во время сборки с Sandcastle - PullRequest
21 голосов
/ 17 октября 2008

Какие шаги мне нужно предпринять, чтобы автоматически собрать HTML-документацию на этапе сборки в Visual Studio? У меня есть все комментарии и генерируется файл comments.xml, а также установлен Sandcastle. Мне просто нужно знать, что добавить к шагу после сборки, чтобы генерировать документы.

Ответы [ 5 ]

33 голосов
/ 05 марта 2011

Некоторые изменения были внесены после того, как был задан этот вопрос. Sandcastle больше не включает SandcastleBuilderConsole.exe. Вместо этого он использует старый добрый MSBuild.exe.

Чтобы интегрировать это с Visual Studio, я сделал следующее:

Поместите это в ваше событие после сборки:

IF "$(ConfigurationName)"=="Release" Goto Exit

"$(SystemRoot)\microsoft.net\framework64\v4.0.30319\msbuild.exe" /p:CleanIntermediates=True /p:Configuration=Release "$(SolutionDir)ProjectName\doc\DocumentationProjectName.shfbproj"

:Exit

Это приведет к тому, что Visual Studio будет создавать вашу документацию, только когда вы работаете в режиме "Release". Таким образом, вы не будете ждать вечно, когда будете строить в режиме «Отладка» во время разработки.

Пара замечаний:

  • Моя система 64-битная, если у вас ее нет, замените framework64 на framework в пути к msbuild.exe.

  • Способ, которым я его настроил, состоит в том, чтобы документировать каждый проект в моем решении индивидуально. Если у вас есть файл проекта «Sandcastle Help File Builder», который включает в себя несколько проектов вместе, то вы, вероятно, захотите избавиться от ProjectName\ и переместить doc в каталог решений. В этом случае вы захотите поместить только команды событий Post-build в проект, созданный LAST в вашем решении. Если вы поместите его в событие Post-build для каждого проекта, то вы будете перестраивать свою документацию для каждого создаваемого проекта. Само собой разумеется, вы будете сидеть там некоторое время. Лично я предпочитаю документировать каждый проект индивидуально, но это только я.

Установка Sandcastle и "Построителя файлов справки Sandcastle".

Если вы не знаете, как правильно настроить Sandcastle и «Построитель файлов справки Sandcastle», выполните следующие действия:

  1. Загрузите и установите Sandcastle из http://sandcastle.codeplex.com/ (если у вас 64-битная система, вам нужно добавить переменную окружения. Инструкции здесь .

  2. Загрузите и установите «Построитель файлов справки Sandcastle» из http://shfb.codeplex.com/ (игнорируйте предупреждения о MSHelp2, если они у вас есть. Он вам не понадобится.)

  3. Как только они будут установлены, используйте «Построитель файлов справки Sandcastle», чтобы создать новый проект документации. Когда он спросит вас, где сохранить файл, сохраните его в папке с документацией, имеющейся в вашем решении / проекте. http://www.chevtek.com/Temp/NewProject.jpg

  4. После создания нового проекта вам нужно выбрать, какую документацию вы хотите создать. Скомпилированный файл справки Windows, веб-сайт или оба. http://www.chevtek.com/Temp/DocumentationType.jpg

  5. Если вы сохранили файл проекта SHFB в каталоге, где вы хотите, чтобы ваша документация была сгенерирована, то вы можете пропустить этот шаг. Но если вы хотите, чтобы сгенерированная документация была размещена в другом месте, вам нужно настроить выходной путь. http://www.chevtek.com/Temp/OutputPath.jpg ПРИМЕЧАНИЕ. Следует помнить одну вещь о пути вывода (что меня расстраивало в течение часа): если у вас выбран веб-сайт в качестве типа документации, который вы хотите, он перезапишет содержимое в своем пути вывода. Чего они не хотят вам сказать, так это того, что SHFB преднамеренно ограничил включение определенных папок в путь вывода. Рабочий стол - одна из таких папок. Ваш путь вывода не может быть на рабочем столе, даже в подпапке рабочего стола. Моими документами это тоже не может, но МОЖЕТ быть подпапкой моих документов. Если вы получаете ошибки при создании документации, попробуйте изменить путь вывода и посмотрите, исправит ли это. Подробнее см. http://shfb.codeplex.com/discussions/226668?ProjectName=shfb.

  6. Наконец, вам нужно будет добавить ссылку на проект, который вы хотите документировать. Если вы делаете отдельные проекты, как я, то для каждого файла проекта SHFB вы будете ссылаться на соответствующий файл .CSPROJ. Если у вас есть один проект SHFB для всего вашего решения, то вы найдете файл .SLN для вашего решения. (sandcastle также работает, если вы ссылаетесь на скомпилированные библиотеки DLL, но поскольку вы интегрируете его с Visual Studio, я считаю, что вместо этого имеет смысл ссылаться на файлы проекта / решения. Это также может означать, что действительно не имеет значения, какой проект вы выполнить событие после сборки, поскольку оно ссылается на код, а не на библиотеки DLL, но лучше быть в безопасности и поместить его в последний созданный проект)http://www.chevtek.com/Temp/AddSource.jpg

  7. Сохраните проект и закройте «Построитель файлов справки Sandcastle». Теперь все настроено. Обязательно поместите файл проекта документации в соответствующую папку, на которую указывают пакетные команды в событии после сборки.

Надеюсь, мой короткий урок поможет вам! Мне было очень трудно найти какие-нибудь приличные учебники, показывающие, как использовать sandcastle, не говоря уже о том, как интегрировать его с visual studio. Надеюсь, в будущем поиск в Google поднимет этот вопрос.

6 голосов
/ 17 октября 2008

Я рекомендую вам установить Filecast Help Builder из Codeplex .

Вы можете запустить это из командной строки, например, из события после постройки. Самая простая командная строка:

<install-path>\SandcastleBuilderConsole.exe ProjectName.shfb

Sandcastle очень медленный, поэтому я запускаю его только для Release Builds. Для этого создайте событие Post-Build с помощью команды, аналогичной следующей, которая передает имя конфигурации в пакетный файл:

CALL "$(ProjectDir)PostBuild.cmd" $(ConfigurationName)

Затем внутри пакетного файла вы можете проверить, является ли первый аргумент «Release» и, если это так, запустить SandcastleBuilderConsole.exe.

1 голос
/ 20 января 2011

Простой способ сделать это, как предложено выше, - использовать Filecast Help File Builder. В процесс сборки были внесены некоторые изменения из командной строки, и теперь эти проекты можно создавать с помощью MSbuild вместо SandcastleBuilderConsole.exe. Так что все, что вам нужно сделать, это:

MSbuild.exe ProjectName.shfb

0 голосов
/ 17 октября 2008

Установите эти:

NDoc: http://prdownloads.sourceforge.net/ndoc/NDoc-v1.3.1.msi?download

HTML Help Workshop: http://www.microsoft.com/downloads/details.aspx?FamilyID=00535334-c8a6-452f-9aa0-d597d16580cc&displaylang=en

Затем используйте командную строку NDocConsole.exe, чтобы сгенерировать документацию в форме MSDN или CHM:

@ c: \ progra ~ 1 \ NDoc \ NDocConsole.exe MyCode.dll, MyCode.xml -Documenter = MSDN-CHM

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

(PS Я уже несколько лет пользуюсь вышеуказанной настройкой и очень ей доволен)

0 голосов
/ 17 октября 2008

Я должен признать, что мне не хватает текущей версии Sandcastle; для больших проектов это довольно медленно, и это не легко интегрировать (так как это все еще рано).

Для обычного использования я на самом деле проще просто указать рефлектором на папку с файлами dll и xml - IIRC, он будет загружать файл (ы) xml при навигации.

Плюс у меня почти всегда открыт отражатель в любом случае ...

[править] проверено, и да - xml-комментарии показываются на панели дизассемблера

...