NAntによる自動ビルドを行おうとしていたのだが、ライセンス情報が必要なライブラリを使った場合に、ライセンスコンパイラ(lc.exe)がエラー0004を出して、ライセンス情報の埋め込みがうまく行われないという問題が解決しないため、断念。詳細は下記参照。
仕方ないので、devenvを呼び出したバッチファイルを使うことに。
以前はソリューションファイルを使っていなかったのだけど、それはあり得ないでしょうということで、やっと各サブシステムごとのソースを束ねたソリューションが用意された。これを連続で呼び出すようなバッチを組んで、夜間に実行することにする。
幸か不幸か、今回のソースは全部同一フォルダをビルド出力先に設定しているので(それが原因の問題も出ているのだけど)、ビルド結果を収集する必要は無い。
最初にVSSから最新のソースを持ってきて、さらに出力先フォルダの内容をチェックアウトしておく(そしてそこにビルドが上書きする)ための処理は以下のように書いた。
rem VSSのデータベースとユーザー情報を事前に環境変数に入れておく set SSDIR=Z:\******\VSS set SSUSER=**** set SSPWD=******* rem ビルド出力先を空にする del /F /Q ..\Bin\*.* del /F /Q ..\Bin_Debug\*.* rem ローカルソースを空にする del /F /Q /S .\Source-A\*.* del /F /Q /S .\Source-B\*.* rem 最新ソースを取得する "C:\Program Files\Microsoft Visual Studio\VSS\win32\SS" get -R $/*******/Source-A "C:\Program Files\Microsoft Visual Studio\VSS\win32\SS" get -R $/*******/Source-B rem ビルド出力先の内容をチェックアウトしておく "C:\Program Files\Microsoft Visual Studio\VSS\win32\SS" checkout $/*****/Bin "C:\Program Files\Microsoft Visual Studio\VSS\win32\SS" checkout $/*****/Bin_Debug rem ソースをRelease/Debugそれぞれでビルドし、経過はテキストに追記する "C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE\devenv" /rebuild release Source-A\Source-A.sln >> buildlog.log "C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE\devenv" /rebuild debug Source-A\Source-A.sln >> buildlog.log "C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE\devenv" /rebuild release Source-B\Source-B.sln >> buildlog.log "C:\Program Files\Microsoft Visual Studio .NET 2003\Common7\IDE\devenv" /rebuild debug Source-B\Source-B.sln >> buildlog.log rem ビルド出力先に出来た(はず)のものをチェックインする "C:\Program Files\Microsoft Visual Studio\VSS\win32\SS" checkin -C- $/*****/Bin "C:\Program Files\Microsoft Visual Studio\VSS\win32\SS" checkin -C- $/*****/Bin_Debug
あとこれに、ラベル処理、ビルドエラーの際のチェックアウト取消と報告処理などを入れれば、とりあえずなんとかなるかと。
VSSのコマンドについては下記を参考にした。