Sandcastleの目次が文字化けする

NDOCが2.0対応しないためSandcastleを利用してヘルプファイル(chm)を作成している。
Sandcastleだけでは大変なのでNDOCと同じようなGUIを持つSandcastle Help File Builderと合わせて利用している。 今まで快適に使っていて特に問題なかったのであるが、クラスやメソッドで日本語のシンボルをもつ定義があるとXSLTの変換で落ちてしまう問題に遭遇した。早速エラー内容をみてみるとencodingが不適切なようなのでXSLTのencodingの指定を削除したらあっけなく落ちることがなくなった。

C:\Program Files\Sandcastle\ProductionTransforms

  • ReflectionToChmProject.xsl
  • ReflectionToChmContents.xsl
  • ReflectionToChmIndex.xsl
<xsl:output method="text" encoding="iso-8859-1" /> → <xsl:output method="text" />

ところが実際に作成されたchmを表示してみると目次が文字化けしてしまうのである。なかなか上手くいかない。
検索してみるとCHMの目次の文字化けはCHMを一旦デコンパイルして再度コンパイルすれば良いようだ。ということで、試しみて確認。うん、うまくいった。

ただ、このやり方は少し面倒くさそうなのでもっと簡単な方法を試行錯誤してみる。
上記の方法で上手くいのだから、なんらかのオプションがヘルププロジェクトにあるのだろうということで、一番怪しそうなLanguage指定を日本語にしてしまう方法を探してみる。Sandcastle Help File Builderを見てみるとLanguageResourcesなるフォルダがあるのでja-JPのフォルダ*1を作成してみる。中身は英語版をコピーしておいた。

これで試してみると、OK動いた。ひとまずは問題解決。よかった。よかった。

追記
Sandcastleの難点としてビルド時間が長い点があります。
これについては、SdkLinkTypeをNoneにすることでビルド処理時間を短縮することができます。(SdkLinkTypeがMSDNの場合、SDK トピックのリンクの確認処理を行うため)

*1:標準でインストールした場合は「C:\Program Files\EWSoftware\Sandcastle Help File Builder\LanguageResources\ja-JP」フォルダ