問題
VSCodeのAzure App Service拡張機能を使って、App ServiceにC#のアプリケーションをデプロイしようとしたら、以下のようなエラーが発生して失敗しました。
C:\Program Files (x86)\dotnet\sdk.0.101\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.ConflictResolution.targets(112,5): error NETSDK1152: Found multiple publish output files with the same relative path: C:\local\Temp\zipdeploy\extracted\QnABot.deps.json, C:\local\Temp\zipdeploy\extracted\bin\Release
20:35:00 qnamaker013-bot8: etcoreapp3.1\QnABot.deps.json, C:\local\Temp\zipdeploy\extracted\QnABot.runtimeconfig.json, C:\local\Temp\zipdeploy\extracted\bin\Release
20:35:00 qnamaker013-bot8: etcoreapp3.1\QnABot.runtimeconfig.json. [C:\local\Temp\zipdeploy\extracted\QnABot.csproj]
20:35:00 qnamaker013-bot8: Failed exitCode=1, command=dotnet publish "QnABot.csproj" --output "C:\local\Tempda0740edbea0c4" --configuration Release
20:35:00 qnamaker013-bot8: An error has occurred during web site deployment.
原因と解決方法
以下、調べていって順に書き足しています。
まず、エラーNETSDK1152については、.NETの公式ドキュメントに説明がありました。
https://docs.microsoft.com/en-us/dotnet/core/compatibility/sdk/6.0/duplicate-files-in-output
The .NET SDK generates a new error (
公式DocよりNETSDK1152
) in cases where files from different source paths would be copied to the same file path in the publish output. This can happen when a project and its project references include a file with the same name that’s included in the publish output.
デプロイ元の中に重複するファイルが存在する場合に起きる・・・?どういうことだ・・・もう一度エラーメッセージを眺めてみる。すると、確かに以下のファイルが重複しているといっている。
C:\local\Temp\zipdeploy\extracted\QnABot.deps.json
C:\local\Temp\zipdeploy\extracted\bin\Release\netcoreapp3.1\QnABot.deps.json
と
C:\local\Temp\zipdeploy\extracted\QnABot.runtimeconfig.json, C:\local\Temp\zipdeploy\extracted\bin\Release\netcoreapp3.1\QnABot.runtimeconfig.json
なるほど、デプロイしたzipの中でファイルの重複がありますね。なぜだ・・#Cアプリのデプロイの方法が間違ってたかな・・?App Serviceの公式Docを見てみる。
あ、違った。プロジェクトフォルダをそのままデプロイするんじゃなくて、その中のビルドしてできたzipをデプロイするのね。
手順の通り、以下のコマンドをうってみる。
dotnet publish XXXXX.sln -c Release -o ./publish
あれ、またでた。
うーん、このプロジェクトの構成自体が悪いのかな・・・(このプロジェクトはAzure Bot Service側で自動生成されたもの)
よくわからなくなったので、Stack Overflowを調べると、同じエラーで困っている人がいた。
ここで紹介されていた以下のWorkaroundを実行してみるとうまくいった。csprojファイルに以下を追加するというもの。
<PropertyGroup>
<ErrorOnDuplicatePublishOutputFiles>false</ErrorOnDuplicatePublishOutputFiles>
</PropertyGroup>
うーん、根本的な原因は分からないままだけど、とりあえず上のWorkaroundで動いて、かつアプリも正常に動作しているので、いったん先に進むとします。
またわかったら更新したいと思います。
おしまい
コメントを残す