ASP.NET Core 2:缺少ApplicationInsights

nom*_*mad 24 asp.net-core asp.net-core-2.0

我发布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
Run Code Online (Sandbox Code Playgroud)

我在Dev环境中没有看到这个错误.所以不确定出了什么问题.有想法该怎么解决这个吗?

更新

我安装了SDK(我只安装了运行时),一切都开始工作了.不确定这是否是最好的解决方案.

nat*_*ter 35

预计此程序集将位于本地运行时存储区中

您收到此错误是因为您没有安装ASP.NET Core Runtime Store.您有两种方法可以解决此问题.

  1. 安装ASP.NET Core Runtime Store.它与.NET Core SDK捆绑在一起,这就是安装SDK修复此问题的原因.您也可以通过以下方式安装没有SDK的商店:https://www.microsoft.com/net/download/all.

  2. 不要使用运行时存储修剪.您可以通过在csproj文件中设置此属性来禁用修剪.

    <PropertyGroup>
        <PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
    </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

您也可以在命令行中传递此信息.

dotnet publish /property:PublishWithAspNetCoreTargetManifest=false
Run Code Online (Sandbox Code Playgroud)

更新:2018年6月25日

此答案仅适用于ASP.NET Core 2.0项目.在ASP.NET Core 2.1中,不再有运行时存储.

  • Netcore 2.1.1在这里.我使用了MSBuild但设置了相同的属性`/ p:PublishWithAspNetCoreTargetManifest = false`它确实解决了问题! (2认同)

pal*_*lxk 12

确保您的项目具有Microsoft.NETCore.App(您的项目目标框架)和Microsoft.AspNetCore.All(默认情况下包含在.NET Core 2.0项目中的NuGet依赖项)或Microsoft.AspNetCore.App(适用于.NET Core 2.1 )的匹配版本+项目).

如果您曾经将项目目标框架从.NET Core 2.0更新到.Net Core 2.1,请记住相应地更新NuGet依赖项,因为它们不会自动更新.


Jps*_*psy 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>
Run Code Online (Sandbox Code Playgroud)

使用此行,所有框架依赖项将打包到发布文件夹中!我的一个项目的公布数据通过此开关从15 Mb增加到55 Mb.但至少这是有效的,直到有更好的解决方案.