KatsuYuzuのブログ

.NET の開発をメインとした日記です。

Web発行先に応じて構成したWeb.config変換をTFSでビルドする #aspnetjp #tfsug

こんな悩み。

経緯

下記を参考に、

ソリューション構成を発行先に合わせて作成しておいて、TFSでこんなことしてみたりしていた。

環境が増えてきてソリューション構成を作成するのが面倒になった。
そして、発行プロファイルを作るようになって、開発環境はVSからそのままデプロイまで済ませちゃって、そうじゃない環境には職人がひとつひとつ手作業でみたいな状態でTFSから成果物を持ってきていた。
それで、冒頭の悩み。

答え

TFSビルドのMSBuild引数に下記を設定。参考画像に見えるx86はSilverlight用の設定なので無関係っす。
f:id:KatsuYuzu:20140501001841p:plain

/p:PublishProfile=プロファイル名,PackageTempRootDir="\\hoge",AutoParameterizationWebConfigConnectionStrings=false,DeployOnBuild=true,DeployTarget=PipelinePreDeployCopyAllFilesToOneFolder
  • PublishProfile=プロファイル名
    • web.プロファイル名.config
  • PackageTempRootDir="\\hoge"
    • 発行先。共有フォルダーのパス。Web発行でフォルダーを選んだときと同様のものがこの共有フォルダーに出力されてくるので、TFSビルドの出力は不要だと思う。
  • AutoParameterizationWebConfigConnectionStrings=false
    • ConnectionStringがプロファイルのプレースホルダーになってしまうので無効化。
  • DeployOnBuild=true
    • デプロイ機能の有効化。
  • DeployTarget=PipelinePreDeployCopyAllFilesToOneFolder
    • デプロイ先として、Webサイトやデプロイパッケージではなく、フォルダーとする。

PublishProfileの指定には発行プロファイルの拡張子(.pubxml)は不要。
あと、発行プロファイルを用意せずにweb.プロファイル名.configだけを準備しても可能だった。ただし、その時はVisual Studio上で右クリックしても変換プレビューが見れなかった。

未解決


デプロイパッケージ(.zipと発行用コマンドファイルなど)だけがTFSビルドで欲しいな。
現状は、この記事の方法で最終配置物(非zip)が手に入る状態。TFSビルド出力を有効にすると余計なもの(すべてのアセンブリがぼろぼろあったり)が多すぎてイヤンってなる。