ASP.NET Core 2アプリケーションを公開していますが、次のエラーが表示されます。
Error:
An Assembly specified in the application dependencies manifest (MyApp.deps.json) was not found:
package: 'Microsoft.ApplicationInsights.AspNetCore', version: '2.1.1'
path: 'lib/netstandard1.6/Microsoft.ApplicationInsights.AspNetCore.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.0-linux-x64.xml;aspnetcore-store-2.0.0-osx-x64.xml;aspnetcore-store-2.0.0-win7-x64.xml;aspnetcore-store-2.0.0-win7-x86.xml
開発環境ではこのエラーは見られませんでした。だから何が間違っていたのかわからない。これを修正する方法についてのアイデアはありますか?
更新
SDKをインストールし(ランタイムのみをインストールしました)、すべてが機能し始めました。しかし、これが最善の解決策であるかどうかはわかりません。
このアセンブリは、ローカルランタイムストアにあることが期待されていました
ASP.NET Core Runtime Storeがインストールされていないため、このエラーが発生しています。これを修正するには2つのオプションがあります。
ASP.NET Coreランタイムストアをインストールします。 .NET Core SDKにバンドルされているため、SDKをインストールするとこれが修正されました。こちらからダウンロードして、SDKなしでストアのみをインストールすることもできます: https://www.Microsoft.com/net/download/all 。
ランタイムストアトリミングを使用しないでください。 csprojファイルでこのプロパティを設定することにより、トリミングを無効にできます。
<PropertyGroup>
<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
</PropertyGroup>
コマンドラインでこれを渡すこともできます。
dotnet publish /property:PublishWithAspNetCoreTargetManifest=false
更新:2018年6月25日
この回答は、ASP.NET Core 2.0プロジェクトにのみ適用されます。 ASP.NET Core 2.1では、ランタイムストアはもうありません。
プロジェクトにMicrosoft.NETCore.App(プロジェクトターゲットフレームワーク)および Microsoft.AspNetCore.All (NuGet依存関係は.NET Core 2.0プロジェクトのデフォルトで含まれています)または Microsoft.AspNetCore.App (.NET Core 2.1+プロジェクトの場合)。
プロジェクトターゲットフレームワークを.NET Core 2.0から.Net Core 2.1に更新したことがある場合は、NuGetの依存関係が自動的に更新されないため、それに応じて更新することを忘れないでください。
この問題については、ここで詳しく説明します: https://github.com/dotnet/coreclr/issues/13542 Microsoftの更新に関連しているようです.AspNetCore.Allをプロジェクトのバージョン2.0.3以降に。
上記の説明に続いて、しばらくの間、ソリューションはホスティングマシンに最新の.NET Core SDKをインストールすることであったようです。しかし、少なくとも現在のSDK 2.1.300では、これで問題は解決しませんでした。
私にとっての解決策は、メインプロジェクトの.csprojに次の行を追加することでした。
<PropertyGroup>
<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
</PropertyGroup>
この行を使用すると、フレームワークのすべての依存関係が公開フォルダーにパックされます!私のプロジェクトの1つの公開データは、この切り替えにより15 Mbから55 Mbに増加しました。しかし、より良い解決策が見つかるまで、少なくともこれは機能します。
@pallxkの答えに何かを追加したいと思います。彼は私の問題を解決するためのヒントをくれました。私はVisual Studioの使用に精通していますが、VSコードにはあまり精通していません。
Visual Studioでは問題はありませんでしたが、VS Codeでは彼が述べたように、Nugetの依存関係を手動で更新する必要があります。それらをどこで更新するかわからなかった。それらは私のプロジェクトフォルダの下にありました:
.vscode/launch.json
更新する必要があります
"program": "${workspaceFolder}/Ghaseel.RestApi/bin/Debug/netcoreapp2.1/myProject.dll
これに
"program": "${workspaceFolder}/Ghaseel.RestApi/bin/Debug/netcoreapp2.2/myProject.dll
これが他の人の問題解決に役立つことを願っています。