Sandcastleのコマンドを実行する方法

これまで紹介してきたように、Sandcastleではコマンドラインのプログラムとヘルプコンパイラを組み合わせてヘルプを生成します。実際にこの作業を行おうとすると、環境変数を設定したり、実行プログラムのパスと引数を設定したり、ファイルをコピーしたりといった、さまざまな手順が必要になり大変です。そこで、実際の業務で使用するときには、これらの手間を軽減するツールを利用することが一般的です。具体的には、以下の4つの中から使いやすい方法を選択してヘルプを生成していくことになります。

(1) バッチファイル
(2) MsBuild
(3) Windows PowerShell
(4) Sandcastle Help File BuilderなどのGUIツール

それでは、1つずつ見ていきましょう。

(1)バッチファイルによるヘルプの生成

コマンドラインのプログラムを順番に実行する方法としては、バッチファイルが有名です。この方法でヘルプを生成してみたい場合は、「C:\Program Files\Sandcastle\Examples\sandcastle」にあるバッチファイルを参考にすると良いでしょう。このフォルダにあるbuild_Sandcastle.batの場合、コマンドプロンプトから次のように実行します。

バッチファイルの実行例

build_Sandcastle.bat prototype SampleLib

このバッチファイルでは、引数にスタイル名とDLL名(拡張子は含まない)を指定して、ヘルプドキュメントを生成できます。 バッチファイルは、特別な環境が不要なため導入は容易です。その反面、エラー制御や部分実行などには適していないため、高度な操作が要求されるときには作業効率が低くなる可能性があります。

(2)MsBuildによるヘルプの生成

MsBuildは、.NET Framework2.0以上の環境で利用できるビルドツールです。MsBuildでは、XML形式のプロジェクトファイルを読み込んで、設定された作業を繰り返し実行できます。バッチファイルに比べて、個別の操作を実行したり、依存関係の管理ができるといった強みがあります。

MsBuildでドキュメントを生成してみたい場合は「C:\Program Files\Sandcastle\Examples\sandcastle」を参考にすると良いでしょう。このフォルダにあるbuild.projの場合、コマンドプロンプトから次のように実行できます(MsBuild.exeは「C:\WINDOWS\Microsoft.NET\Framework\バージョン\MSBuild.exe」にあります)。

Msbuildの実行例(ビルドファイル「build.proj」の読み込み)

Msbuild.exe build.proj /property:PresentationStyle=prototype

この実行例の場合、「build.proj」のデフォルトターゲットのBuildターゲットが動作して、HTML Help1.x形式のヘルプが生成されます。このプロジェクトファイルにあらかじめ用意されているターゲットは次の通りです。

Exampleに用意されているビルドファイルのターゲット一覧

ターゲット名 説明
Build Clean,FxReflection,Compile,Chmターゲットを順に呼び出す
Clean 作業フォルダの削除
FxReflection .NET Framework情報のリフレクション(fxReflection.proj呼び出し)
Compile C#ソースコードのビルド(csc)
Template 必要なファイル(iconやscripts)のコピー
ReflectionData MRefBuilderを呼び出してクラスとメンバの情報を取得
Manifest マニフェストファイルの生成
Html BuildAssemblerを呼び出してHtmlを生成
Chm HTML Help1.x形式のヘルプを生成
HxS HTML Help2.x形式のヘルプを生成

個別のターゲットを動作させたい場合には、「/target:HxS」のように/targetオプションとターゲット名を指定すれば、その処理を呼び出すことができます。

(3)Windows PowerShellによるヘルプの生成

Windows PowerShellは、Windowsの新しいシェルおよびスクリプト言語です。.NET Framework上に構築されており、オブジェクト指向に基づいた高度な機能が備わっています。 PowerShellでヘルプドキュメントを生成してみたい場合は、「C:\Program Files\Sandcastle\ProductionTools\scbuild.ps1」を呼び出して実行します。ただし、PowerShellは、Windows XP/VISTA/2003 Serverでは標準でインストールされていないため、別途入手してインストールする必要があります。インストールしたらスタートメニューからPowerShellを起動して、次のコマンドを入力できます。

PowerShellの実行例(HTML Help1.x形式のヘルプを生成)

$env:PATH += ";C:\Program Files\Sandcastle\ProductionTools"
$env:PATH += ";C:\Program Files\HTML Help Workshop"
cd C:\SampleLib\bin\Debug

scbuild.ps1 -BuildChm -sources SampleLib.dll,SampleLib.xml -Style prototype -Name ....\doc\MyHelp -Lcid 1041 -clean

この実行例の場合、アセンブリ「SampleLib.dll」とドキュメントコメント「SampleLib.xml」を元に、prototypeスタイルで「MyHelp.chm」というヘルプファイルが生成されます。 なお、既に解説したバッチファイルやMsBuildとは異なり、このPowerShellスクリプト「scbuild.ps1」はProductionToolsフォルダに含まれています。現バージョンのPowerShellスクリプト「scbuild.ps1」で用意されているパラメータは次の通りです。

PowerShellで用意されているパラメータ一覧

パラメータ 説明
-BuildChm Switch HTML Help1.x形式のヘルプを生成
-BuildHxS Switch HTML Help2.x形式のヘルプを生成
-BuildWebsite Switch Webサイトの生成
-Clean Switch 作業フォルダの削除
-Test Switch 環境のチェック
-BuildAssemblerConfig String BuildAssemblerの設定ファイル
-Config String コマンドラインの設定ファイル
-Dependencies Object[] 依存するアセンブリ
-DxRoot String Sandcastleの場所(環境変数DxRoot)
-Framework String 特定の.NET Frameworkのバージョン
-Lcid String 言語ID(既定値は1033)
-Mixin String スクリプト拡張用ファイル
-Name String 出力ファイル
-Sources Object[] アセンブリ、ドキュメントコメントファイル(カンマ区切り)
-Style String 表示するスタイル
-TempDir String 作業フォルダ
-WebBuildConfig String Webサイト構築時の設定ファイル
-WebTemplate String Webサイト構築時のテンプレートフォルダ

このパラメータの中で目を引くのは、バッチファイルやMsBuildにはなかったBuildWebsiteパラメータです。このパラメータはヘルプドキュメントをASP.NETのサイトとして作成する命令です。

PowerShellの実行例(ASP.NET Webサイトの生成)

scbuild.ps1 -BuildWebsite -sources SampleLib.dll,SampleLib.xml -Style vs2005 -Name ....\My -Lcid 1041 -clean

上記のコマンドを実行すると、My_websiteというフォルダが生成され、このフォルダをサイトとして登録することで、Webサイトを公開することができます。