Sandcastleのコマンドラインツールが、どのようにしてドキュメントとなるHTMLを生成しているのかを見ていきましょう。

(2)MRefBuilder.exeによるリフレクション

まず、アセンブリ内のクラスとメンバの型情報を取得します。このときに利用するツールがMRefBuilderです。MRefBuilderの引数に対象アセンブリを指定すると、それに対してリフレクションを行い必要な情報をXML形式で出力します。コマンドの例としては、次のようになります。

MRefBuilderの実行例

MRefBuilder.exe SampleLib.dll /out:reflection.org

この例では、SampleLib.dllの型情報をすべてreflection.orgというXMLファイルに出力しています。MrefBuilderには、パラメータとして次の項目を設定できます。

MRefBuilder.exeのパラメータ

パラメータ 説明
/out: 出力ファイルのパスを指定(未指定の場合コンソール)
/config: 設定ファイルを指定(未指定の場合はMRefBuilder.config)
/dep: 依存するアセンブリがあれば指定
/internal+|- 出力するAPIのスコープを指定

(3)XslTransform.exeによるXMLの変換/出力

MRefBuilderによって生成された型情報のXMLファイルを、XSLT(XSL Transformations)にて変換していきます。この変換に利用するツールがXslTransformで、引数には変換元のXMLファイルを指定します。

XslTransform.exeの実行例

XslTransform.exe reflection.org /xsl:ApplyPrototypeDocModel.xsl /xsl:AddGuidFilenames.xsl /out:reflection.xml
XslTransform.exe reflection.xml /xsl:ReflectionToManifest.xsl /out:manifest.xml

1つめの例では、reflection.orgというXMLファイルに、Prototypeスタイルの形式とGUIDのユニークなファイル名を付加し、reflection.xmlファイルに出力しています。 2つめの例では、reflection.xmlの情報を元に、Htmlを生成するためのマニフェスト(一覧のようなもの)を出力しています。 XslTransformのパラメータとしては次のような項目を設定できます。

XslTransform.exeで指定できるパラメータ

パラメータ 説明
/out: 出力ファイルのパスを指定(未指定の場合コンソール)
/arg:name=... 引数を指定
/xsl: XSLTのパスを指定

以上で、HTMLを生成するためのXMLの準備が揃いました。

(4)BuildAssembler.exeによるHTMLの生成

BuildAssemblerは、アセンブリの型情報とXMLドキュメントコメントを結合して、ヘルプファイルの元になるHTMLを生成します。また、BuildAssemblerは、HTMLのリンク情報の解決をしたり、スタイルに応じたレイアウトを適用したりといった処理も行います。

BuildAssembler.exeの実行例

BuildAssembler manifest.xml /config:"....\Presentation\prototype\configuration\sandcastle.config" 

BuildAssemblerの引数には、生成するHTMLの一覧情報が書かれたマニフェスト(manifest.xml)を指定します。出力先やコメントファイル等の情報は、/config:パラメータで指定できる設定ファイル(sandcastle.config)に記述します。

以上の手順で、ヘルプドキュメントの元になるHTMLが全ページ分生成されました。 ここでは、Sandcastleが内部的に「MRefBuilderで型情報をXMLに出力」→「XslTransformで変換/整形」→「BuildAssemblerで型情報とXMLドキュメントを結合してHTMLに出力」という仕事をしていることを紹介しました。次回はこのHTMLからヘルプファイルを生成する方法について紹介します。