5

ビルドの一部として、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 を使用しています。

4

4 に答える 4

0

TFS 2010 Build は、既定でTransform MSBuild タスクを呼び出さないようです。TFS ビルド定義を編集してそれを呼び出す新しいアクティビティを追加するか、プロジェクト ファイルを編集してこれを行う必要があります。

スタック オーバーフローの質問TFS ビルドが web.config を期待どおりに変換しないは、プロジェクト ファイルに変更を加えるための新しいアクティビティとブログ投稿の統合 Web 構成変換と TFS ビルドの追加に役立つはずです。

于 2013-07-17T13:53:55.077 に答える
0
/p:DeployOnBuild=True;PublishProfile=app.ui.dev.pubxml

.pubxml をプロファイルの最後に置くべきだとは思いません。このようにする必要があります

/p:DeployOnBuild=True;PublishProfile=app.ui.dev
于 2014-02-10T12:25:28.593 に答える
0

私はちょうどこの問題を抱えていました。MSBuild ログを確認し、ローカル ZIP パッケージの作成を確認し、リモート IIS への Web Deploy プッシュを確認しましたが、常に既定の構成ファイルを使用していました!

QA 設定を確認するために調べていた XML の塊に、このxdt:Transform="Replace"属性が欠けていることが判明しました。

これが誰かに役立つことを願っています。

于 2014-10-16T09:20:49.797 に答える