我正在发布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
我在Dev环境中没有看到这个错误。所以不确定出了什么问题。关于如何解决这个问题的任何想法?
更新
我安装了SDK(我只安装了运行时),一切都开始工作了。不确定这是否是最好的解决方案。
答案 0 :(得分:34)
此程序集应位于本地运行时存储区
您收到此错误是因为您没有安装ASP.NET Core Runtime Store。您有两种方法可以解决此问题。
安装ASP.NET Core Runtime Store。它与.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中,不再有运行时存储。
答案 1 :(得分:11)
确保您的项目具有 Microsoft.NETCore.App (您的项目目标框架)和Microsoft.AspNetCore.All的匹配版本(默认情况下包含在.NET Core 2.0项目中的NuGet依赖项)或{ {3}}(适用于.NET Core 2.1+项目)。
如果您曾经将项目目标框架从.NET Core 2.0更新到.Net Core 2.1,请记住相应地更新您的NuGet依赖项,因为它们不会自动更新。
答案 2 :(得分:9)
此问题在此处详细讨论: 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>
使用此行,所有框架依赖项将打包到发布文件夹中!我的一个项目的公布数据通过此开关从15 Mb增加到55 Mb。但至少可行,直到有更好的解决方案。
答案 3 :(得分:0)
我想在@pallxk的答案中添加一些内容。他给了我解决我问题的提示。 我熟悉使用Visual Studio,但不熟悉VS Code。
使用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
我希望这可以帮助其他人解决他们的问题。
答案 4 :(得分:0)
我已经通过安装nuget软件包解决了这个问题
“ Microsoft.AspNetCore.ApplicationInsights.HostingStartup”