MSBuild で ClickOnce アプリケーションを発行する
せっかく CruiseControl.NET で自動ビルドを構築しているんだから、ClickOnce アプリケーションの発行も自動化できないか試してみたのでメモ。
とりあえず発行してみる
発行自体は MSBuild を使うと簡単にできた。
MSBuild.exe hoge.csproj /t:publish
ところがVS上で設定している場所には発行されずに bin/debug/hoge.publish 以下に発行される。
どうやらかなり hoge.csproj の設定を無視するらしい。
試行錯誤してみる
MSDNによるとコマンドラインでプロパティをオーバーライドできるらしいので実行してみた。
MSBuild.exe hoge.csproj /t:publish /p:PublishUrl=c:\hoge\publish
が、結果は同じ。
隠しプロパティなのか、PublishUrl でなくて PublishDir と指定すると意図したとおりに発行される。
MSBuild.exe hoge.csproj /t:publish /p:PublishDir=c:/hoge/publish/
しかし、 publish の後ろに「 / 」がないとデプロイメントマニフェスト名が publishhoge.application のようにおかしくなり、代わりに「 \ 」を付けるとエラーになるおまけつき・・・
publish.htm が出力されない
VS上で発行したときは publish.htm という ClickOnce アプリケーションのインストールページが生成されるが、MSBuild で発行するとこれが生成されない。
以下のように明示的に指定してもダメ。謎だ。
まあ1度VSから生成してしまえば、違いはバージョン番号くらいなのでまあいいかな。
MSBuild.exe hoge.csproj /t:publish /p:PublishDir=c:/hoge/publish/;CreateWebPageOnPublish=true;WebPage=test.htm
Web アプリケーション / サービスを発行したい
ここまできたら Web アプリケーション / サービスも発行したいんだけど、これは方法が見つからない。プロジェクトファイルがないためだ。ソリューションファイルを与えると、含まれているプロジェクトを発行するだけで肝心の Web アプリケーション / サービスは発行されない。
とりあえず事前コンパイルで我慢するしかないのかな・・・