Я использовал Построитель файлов справки Sandcastle (SHFB) для генерации CHM.
Для написания контента я следовал указаниям и примеру, приведенным в Руководстве по MAML Sandcastle, доступно на codeplex . Это заставило меня написать документ в формате «MAML», который является диалектом XML для описания файлов справки.
Это выглядит так:
<?xml version="1.0" encoding="utf-8"?>
<topic id="4e9fd731-fc2f-4bdf-9ca2-3a8755411b2f" revisionNumber="1">
<developerConceptualDocument
xmlns ="http://ddue.schemas.microsoft.com/authoring/2003/5"
xmlns:xlink ="http://www.w3.org/1999/xlink">
<!--
<summary>
<para>Optional summary abstract</para>
</summary>
-->
<introduction>
<!-- Uncomment this to generate an outline of the section and sub-section
titles. Specify a numeric value as the inner text to limit it to
a specific number of sub-topics when creating the outline. Specify
zero (0) to limit it to top-level sections only. -->
<!-- <autoOutline /> -->
<para>
</para>
</introduction>
<!-- Add one or more top-level section elements. These are collapsible.
If using <autoOutline />, add an address attribute to identify it
and specify a title so that it can be jumped to with a hyperlink. -->
<section address="Section1">
<title>Section Title</title>
<content>
<!-- Uncomment this to create a sub-section outline
<autoOutline /> -->
<para>
Lorem ipsum dolor sit amet, consectetuer adipiscing
elit. Integer vulputate, nibh non rhoncus euismod, erat odio
pellentesque lacus, sit amet convallis mi augue et
odio. Phasellus cursus urna facilisis quam. Suspendisse nec
metus et sapien scelerisque
</para>
<para>
Quisque pharetra lacus quis sapien. Duis id est
<externalLink>
<linkText>dictum sed, sapien</linkText>
<linkAlternateText>alt text</linkAlternateText>
<linkUri>http://stackoverflow.com/questions/tagged/chm</linkUri>
</externalLink>
</para>
</content>
</section>
<relatedTopics/>
</developerConceptualDocument>
</topic>
Помимо создания контента на разных страницах, вам необходимо указать схему - как все страницы сочетаются друг с другом. Как только вы это настроите, это довольно легко. Тогда генерация CHM просто требует запуска SHFB.
Не откладывайте на себя тэг "developerConceptualContent". В сгенерированном .chm нет ничего, что делает его полезным только для разработчиков.
Инструмент SHFB бесплатный.