Yasuo's Notebook

ソフトウェア開発の話題が中心の備忘録です。

SandCastleでのヘルプファイル生成をTFSのビルドプロセスに組み込む際の留意点

今日、少しはまったので備忘録として。
SandCastleというツール。ソースコードに書かれたコメントから
ヘルプファイルを生成するツールで、API仕様を出力したり、テストコードにテスト仕様をコメントで書いてテスト仕様を出力するのに活用しています。

http://sandcastle.codeplex.com/

このツールを使ったヘルプ生成をTFSのビルドプロセスに組み込む際に、注意点があります。
ビルドプロセスへの組み込み方法は、TFSのビルドプロセスにOpenCoverのカバレッジ計測を組み込む(後半) - Yasuo's Notebookと同じです。バッチファイルを実行する処理とビルド結果のディレクトリへの生成ファイルのコピーを追加します。

サーバー上でバッチファイルを実行してうまくヘルプファイルを生成できることを確認してTFSでのビルドを実行しても、うまくヘルプが生成されません。
調べてみると、以下のようなエラーが出ていることが判りました。

A file access error occured while attempting to load the component assembly 'C:\Program Files (x86)\Sandcastle\ProductionTools\%DXROOT%\ProductionTools\MRefBuilder.exe'

SandCastleをインストールした際に追加されるシステム環境変数の%DXROOT%がTFSの自動ビルドを実行するSYSTEMアカウントで参照できないようです。
システム環境変数を確認してバッチファイル内でこの環境変数に値を明示的に指定してあげることでうまく動作しました。

TFSのビルドプロセスに他のツールを使った処理を組み込んでうまく動かない場合は、ユーザアカウントの違いも疑った方が良さそうです。