misc.log

日常茶飯事とお仕事と

自作ヘルプをVisual Studio 2010からF1で参照できるようにしたい

ドキュメントコメントから生成されるヘルプを、Visual Studio 2010上でコードの一部を選択してF1押下により呼び出せるようにしたいのですが……ちょっとうまくいかず困っています。同じようなことはVisual Studio.NET 2003の頃にやっていたのですが、当時とはヘルプの仕組みも変わってしまい、同じ方式は使えないようです。Visual Studio 2010のメニューにある[ヘルプ]-[ヘルプ設定の管理] で表示されるダイアログから、ローカルディスクにあるヘルプデータを取り込むことは出来るようなのですが、.chm形式で出力されたようなヘルプは対象外のようでした。


調べてみると、SandCastleのプロパティにある[HelpFileFormat]を「MSHelpViewer」に変えて出力することで、上記の「ヘルプ設定の管理」画面から取込対象になる形式のデータが出力されるようです。



やってみました。出力あえたファイルは1つではなくて複数。このあたりは.NET 2003の頃も単体で見られない形式のファイルが出てきたのを処理した覚えがあるので、まぁ納得。で、「ヘルプ設定の管理」で取込を指示すると、どうやら拡張子「.msha」のファイルが対象になるようです。で、やってみたのですが……ファイルを選んでも「次へ」のボタンが押せずに先に進めません。


良く見てみると、ヘルプの出力フォルダにバッチファイルやら実行形式のファイルがあります。

  • Install_Commons.bat
  • Remove_Commons.bat
  • HelpLibraryManagerLauncher.exe


Commonsってのは今回作ったライブラリの名称です。で、このバッチファイルの中を見てみると…

@ECHO OFF
CLS

REM This is an example script to show how to use the Help Library Manager
REM Launcher to install an MS Help Viewer file.  You can use this as an example
REM for creating a script to run from your product's installer.

REM NOTE: If not executed from within the same folder as the executable, a
REM full path is required on the executable and the HelpContentSetup.msha file.

REM Uninstall first in case it is already there.  If not, it won't install
REM below.  We'll ignore any error output by redirecting it to NUL.
HelpLibraryManagerLauncher.exe /product "VS" /version "100" /locale ja-jp /uninstall /silent /vendor "Vendor Name" /mediaBookList "Commons Library Help" /productName "Commons Libraries" > NUL

REM The setup name must be HelpContentSetup.msha so make sure we copy the
REM setup file to that name.  SHFB names it after the help file so that
REM multiple files can be deployed to the same output older at build time.
COPY /Y "PgiCommons.msha" HelpContentSetup.msha

REM Install the new content.
HelpLibraryManagerLauncher.exe /product "VS" /version "100" /locale ja-jp /brandingPackage Dev10.mshc /sourceMedia HelpContentSetup.msha


ほとんどが注釈行ですが、中に3行、実効行がありますね。どうやら出力フォルダにできた実行形式ファイル(.EXE)を使って、ヘルプをインストールするバッチファイルのようです。で、Removeで始まるファイルはその逆ですね。早速やってみます……。すると、「ヘルプ設定の管理」の画面が開き、自作ヘルプが取込対象として表示されます。そこで「追加」を押し、処理終了。早速ヘルプを開いてみます…すると



えー……。まず、メソッドとかプロパティを表すアイコン画像がリンク切れ状態になっています。また、「Dispose()」の括弧が「()()()()」になってます……意味判らん。
画像については、同じ形式で見られるようになっているODP.NETのヘルプやCrystal Reports for Visual Studio 2010のヘルプでは綺麗に表示されていますので、環境というよりも作りの問題なのだろうと……しかし、現時点では対応策が判りません。とりあえず、別の作業が入ったので一旦保留に。