ビルドの一部として、TFSを介して Visual Studio 2012 ソリューションに 2 つの Web サイト プロジェクトを展開しようとしています。WIP
現在、 (作業中) と の2 つの異なる Web サーバーがありDEV
ます。
いずれかのサーバーに異なる接続文字列を展開して、異なるデータベースに接続できるようにします。Visual Studio を搭載した開発マシンでソリューションをテストしました。すべての構成で、Web プロジェクトが公開さweb.config
れると、Web サーバーをチェックしたときに接続文字列が期待どおりに変換されます。
ビルドはWIP
、デフォルトのデバッグ ソリューション構成を使用するサーバーで正常に動作しています。TFS ビルドの構成は Any CPU|Debug です。
次の構成 ( DEV
) では、Web プロジェクトが Visual Studio 2012 を介して Web サーバーに発行され、web.config
ファイルが変換されることを確認します。
ただし、MSBuild引数DEV
を使用してビルドを実行すると、変換が行われないことがわかります。ビルドの Items to Build セクションの構成を次の宛先に送信しました: Any CPU|Dev.
/p:VisualStudioVersion=10.0 /p:DeployOnBuild=True;PublishProfile=app.ui.dev.pubxml /p:DeployTarget=MsDeployPublish /p:MsDeployServiceUrl=https://server-dev-hrtech:8172/MSDeploy.axd /p:CreatePackageOnPublish=True /p:MSDeployPublishMethod=WMSVC /p:AllowUntrustedCertificate=True /p:Username=username /p:Password=password /p:_WPPCopyWebApplication=True /p:PipelineDependsOnBuild=False
ビルド ログと出力ディレクトリを見ると、期待どおりobj/Debug
のディレクトリではなく、コンパイルされたアセンブリがディレクトリにあることがわかりobj/Dev
ます。/p:Configuration="Dev"
ログでは、期待どおりに明確に確認できます。
肝心なのは、Web サーバーで最終的に公開さweb.config
れるのは、デバッグ構成からの既定のweb.config
ファイル (つまり、変換されていない) です。これは、MSBuild が、ソリューションの引数で渡された構成パラメーターを認識できないかのようです。
開発マシンのコマンド ラインから msbuild を実行して、なぜこれが発生するのかを理解しようとしました。
TFS ビルドを介して送信された MSBuild パラメーターを削除することで、Web 構成が変換されないことがわかります。
msbuild "app-no database.sln" /t:app_ui:Rebuild /P:TransformConfigFiles=true /p:Configuration=Dev /p:Platform="Any CPU" /p:MSDeployServiceUrl=https://app-dev-hrtech:8172/MSDeploy.axd /p:Username=username /p:Password=password /p:DeployOnBuild=True /p:PublishProfile=app.ui.dev.pubxml /p:VisualStudioVersion=11.0 > build.log
これを変更して、MSBuild を使用してプロジェクト ファイルを直接ビルドできます。私は、以下のコマンドがweb.config
公開アプリケーションのファイルを変換することを発見しました:
msbuild app.ui\app.ui.csproj /p:Configuration=Dev /p:MSDeployServiceUrl=https://app-dev-hrtech:8172/MSDeploy.axd /p:Username=username /p:Password=password /p:DeployOnBuild=True /p:PublishProfile=app.ui.dev.pubxml /p:VisualStudioVersion=11.0 /p:AllowUntrustedCertificate=True > build.log
問題は、これを TFS ビルドの一部として実行するのが難しいことです。これらは複数のプロジェクトであり、一部は Web サイト用で、他は Windows サーバー用などです。
最初のコマンドを使用して、Web プロジェクトを適切に変換するように修正するにはどうすればよいですか?
ご覧のとおり、いくつかの発行プロファイルを作成したので、MSBuild 引数だけでなく TFS ビルドでも使用できる可能性があります。
PS: サーバーには Visual Studio 2012、TFS 2010、Windows 2008R2、開発マシンには Windows 7 を使用しています。