Microsoft.AspNetCoreを2.0.3から2.0.5にアップグレードしましたが、WebAPIプロジェクトはローカルで正常に実行されていますが、実稼働(IIS)で開始できません。このアップグレードまで、本番環境ではすべて正常でした。ログディレクトリで生成されるエラーメッセージは次のとおりです。
Error:
An Assembly specified in the application dependencies manifest (MyProject.WebAPI.deps.json) was not found:
package: 'Microsoft.AspNetCore.Mvc.Abstractions', version: '2.0.2'
path: 'lib/netstandard2.0/Microsoft.AspNetCore.Mvc.Abstractions.dll'
This Assembly was expected to be in the local runtime store as the application was published using the following target manifest files:
aspnetcore-store-2.0.5.xml
誰かがこれが何を意味するのかを正確に説明してもらえますか?私はそれが種類のバージョンの不一致だと思いますが、なぜこれが起こっているのですか? NuGetパッケージの最新の安定版リリースでは、このような問題は発生しないはずです。
Microsoft.AspNetCore.Allを2.0.5から2.0.3にダウングレードすることで問題を解決できましたが、このパッケージの最新バージョンを使用できるように、問題に対するより良い解決策を見つけたいと思います。
通常、開発マシンにはSDKがインストールされていますが、運用環境ではランタイムのみがインストールされています。
以下を.csprojファイルに追加して、再度公開します。
<PropertyGroup>
<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
</PropertyGroup>
エラーメッセージの前半を解決するには、An Assembly specified in the application dependencies manifest (…) was not found
ターゲットサーバーにデプロイするときに必ず発行出力を使用するようにしてください。
自己完結型アプリケーションの場合は、次の場所にあります。
bin\Release\netcoreapp2.0\win81-x64\publish
またはでフレームワーク依存の展開用
bin\Release\netcoreapp2.0\publish
上記のディレクトリの出力は、ビルドに使用されるマシンおよびユーザー構成に固有であるため、開発でのみ使用することを意図しています。
関連する回答 から取得
このエラーが発生しましたが、私の解決策は上記の投稿とは多少異なります。私の問題は、Zipファイルを使用して展開し、Zipファイルの構築中にサブディレクトリを含めなかったため、必要なファイルが含まれていないことでした。
したがって、Zipファイルを使用して公開する場合は、Zipの作成中にすべてのサブフォルダーを含めるようにしてください。
2セント:ビルドフォルダーから取得するだけの場合、依存関係のdllは提供されません。フォルダーを公開する場合は、そうです。これは私にとっての修正でした。