web-dev-qa-db-ja.com

リリース中のAzure DevOps XML変換が機能しない

個別のビルドを作成しなくても、1つのビルドを複数の環境で使用できるようにパイプラインを構成したいと考えています。 docs によると、それは可能であるように見えます:

  • この手法を使用して、デフォルトのパッケージを作成し、それを複数のステージにデプロイできます。

ステージに自分の環境(プレビュー)という名前を付け、その環境用のweb.configファイル(web.preview.config)ファイルを作成しました。 Web.Configファイルと同じパスにあるすべての環境設定ファイル。

ログは変換が完了したと言います:

2018-11-17T00:26:52.0383966Z [コマンド] D:\ a_tasks\AzureRmWebAppDeployment_497d490f-eea7-4f2b-ab94-48d9c1acdcb1\3.4.13\ctt\ctt.exe s:D:\ a_temp\temp_web_package_06958915_C \\ Content\Content a\1\s\Microsoft.Xbox.Mvp\Microsoft.Xbox.Mvp.Api\obj\Preview\Package\PackageTmp\bin\Web.config t:D:\ a_temp\temp_web_package_06958915987488234\Content\D_C\a\1\s\Microsoft.Xbox.Mvp\Microsoft.Xbox.Mvp.Api\obj\Preview\Package\PackageTmp\bin\Web.Release.config d:D:\ a_temp\temp_web_package_06958915987488234\Content\D_C\a\1\s\Microsoft.Xbox.Mvp\Microsoft.Xbox.Mvp.Api\obj\Preview\Package\PackageTmp\bin\Web.config pw i 2018-11-17T00:26:52.4335280Z [command] D:\ a_tasks\AzureRmWebAppDeployment_497d490f-eea7 -4f2b-ab94-48d9c1acdcb1\3.4.13\ctt\ctt.exe s:D:\ a_temp\temp_web_package_06958915987488234\Content\D_C\a\1\s\Microsoft.Xbox.Mvp\Microsoft.Xbox.Mvp.Api\obj\Preview\Package\PackageTmp\bin\Web.config t:D:\ a_temp\temp_web_package_06958915987488234\Content\D_C\a\1\s\Microsoft.Xbox.Mvp\Microsoft.Xbox.Mvp.Api\obj\Previe w\Package\PackageTmp\bin\Web.Preview.config d:D:\ a_temp\temp_web_package_06958915987488234\Content\D_C\a\1\s\Microsoft.Xbox.Mvp\Microsoft.Xbox.Mvp.Api\obj\Preview\Package\PackageTmp\bin\Web.config pw i 2018-11-17T00:26:52.5443873Z XML変換が正常に適用されました

ドキュメントが言うように、最初にリリースに変換され、次にプレビューが適用されたことがわかります(リリース、次に環境)。ただし、XML変換は正常に適用されたと表示されていますが、構成変数を確認しても変更されていません。変換を機能させる唯一の方法は、新しいビルドをキューに入れるときにbuildConfiguration変数を定義することでした。これにより、異なる環境で同じビルドを使用できなくなりました。

私が調査していたとき、これからこれを見つけました link

Web.configはビルドプロセス中に変換されます。「ビルド」から展開パッケージを生成し、「リリース」で展開すると、展開前に変換できません。

しかし、ドキュメントでは、1つのデフォルトパッケージを複数のステージに使用できると述べています...それでも、環境ごとに個別のビルドを作成する必要があるということですか? XML変換は、解決したいシナリオで私が注意すべきことではありませんか?

前もって感謝します!

++編集:

リリース設定: ReleaseSettings

リリース手順(これはあなたが探しているものだと私は強く感じています...): ReleaseSteps

5
Sahngah Lee

私はこれを機能させただけなので、複数の環境にデプロイして1つのビルドを作成できます。これは私がやったことです。

コードでは、各Web..configプロパティをBuild Action = "Content"に設定しています。また、すべての出力をCopy to Output Directory = "Copy Always"に設定しました。また、プロジェクトをアンロードしてcsprojファイルを編集し、Web.config行を削除しました。これにより、すべてのweb.configがルートにダンプされます(ファイルのネストはありません)。

ビルドでは、パイプライン変数BuildConfiguration = "Release"を設定しました。プロジェクトにWeb.Release.configがありません。

リリースでは、環境にちなんでデプロイメントステージに名前を付けました(私の場合、開発、ステージング、およびプロダクション)。すべてのステージで、Azureデプロイメントタスクで、XML変換チェックボックスをオンにしました。

Azureでは、ASPNETCORE_ENVIRONMENTをステージング環境の名前(私の場合、開発、ステージング、およびプロダクション)に設定しました。

0
Joe Wilson

私もこれを動作させました。私の問題は、実際にはVisual Studio Solutionレベルでした。 MVCプロジェクトが他の構成とは異なる構成を指すようにしました。常に設定を再確認してください!

0
OJisBad