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からヘルプファイルを生成する方法について紹介します。