Azure App Serviceに.NET(C#)アプリケーションをデプロイしようとしたら”error NETSDK1152: Found multiple publish output files with the same relative path: “エラーが発生した

問題

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 (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.

公式Docより

デプロイ元の中に重複するファイルが存在する場合に起きる・・・?どういうことだ・・・もう一度エラーメッセージを眺めてみる。すると、確かに以下のファイルが重複しているといっている。

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を見てみる。

https://docs.microsoft.com/ja-jp/aspnet/core/tutorials/publish-to-azure-webapp-using-vscode?view=aspnetcore-6.0#generate-the-deployment-package-locally

あ、違った。プロジェクトフォルダをそのままデプロイするんじゃなくて、その中のビルドしてできたzipをデプロイするのね。

手順の通り、以下のコマンドをうってみる。

dotnet publish XXXXX.sln -c Release -o ./publish

あれ、またでた。

うーん、このプロジェクトの構成自体が悪いのかな・・・(このプロジェクトはAzure Bot Service側で自動生成されたもの)

よくわからなくなったので、Stack Overflowを調べると、同じエラーで困っている人がいた。

https://stackoverflow.com/questions/69919664/publish-error-found-multiple-publish-output-files-with-the-same-relative-path

ここで紹介されていた以下のWorkaroundを実行してみるとうまくいった。csprojファイルに以下を追加するというもの。

<PropertyGroup>
 <ErrorOnDuplicatePublishOutputFiles>false</ErrorOnDuplicatePublishOutputFiles>
</PropertyGroup>

うーん、根本的な原因は分からないままだけど、とりあえず上のWorkaroundで動いて、かつアプリも正常に動作しているので、いったん先に進むとします。

またわかったら更新したいと思います。

おしまい

この記事を気に入っていただけたらシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUT US
Yuu113
初めまして。ゆうたろうと申します。 兵庫県出身、東京でシステムエンジニアをしております。現在は主にデータ分析、機械学習を活用してビジネスモデリングに取り組んでいます。 日々学んだことや経験したことを整理していきたいと思い、ブログを始めました。旅行、カメラ、IT技術、江戸文化が大好きですので、これらについても記事にしていきたいと思っています。