【问题标题】:Cannot find Application Insights dependency in docker image after dotnet publishdotnet 发布后在 docker 映像中找不到 Application Insights 依赖项
【发布时间】:2017-02-23 20:10:37
【问题描述】:

尝试从 docker 映像运行我的应用程序时收到以下错误:

Error: assembly specified in the dependencies manifest was not found -- package: 'Microsoft.ApplicationInsights.AspNetCore', version: '1.0.2', path: 'lib/netstandard1.6/Microsoft.ApplicationInsights.AspNetCore.dll'

docker 镜像基于microsoft/aspnetcore

使用 dotnet restoredotnet publish 在 docker 映像 microsoft/aspnetcore-build:1.1.0-projectjson 上构建的文件

{app}.deps.json 中的"targets" 下我有:

  "Microsoft.ApplicationInsights.AspNetCore/1.0.2": {
    "dependencies": {
      "Microsoft.ApplicationInsights": "2.1.0",
      "Microsoft.AspNetCore.Hosting.Abstractions": "1.0.0",
      "Microsoft.AspNetCore.Http.Abstractions": "1.0.0",
      "Microsoft.AspNetCore.Mvc.ViewFeatures": "1.0.1",
      "Microsoft.Extensions.Configuration": "1.0.0",
      "Microsoft.Extensions.DiagnosticAdapter": "1.0.0",
      "Microsoft.Extensions.Logging.Abstractions": "1.0.0",
      "System.Net.NameResolution": "4.3.0"
    },
    "runtime": {
      "lib/netstandard1.6/Microsoft.ApplicationInsights.AspNetCore.dll": {}
    },
    "compile": {
      "lib/netstandard1.6/Microsoft.ApplicationInsights.AspNetCore.dll": {}
    }
  },

我发布的输出中没有lib 文件夹,但我发布的输出的根目录中有Microsoft.ApplicationInsights.AspNetCore

我觉得我错过了一些明显的东西。任何帮助将不胜感激。

更新:

将 Application Insights 更新到 2.0.0 无效。

删除 Application Insights 只是将问题转移到另一个程序集。

切换到独立部署无效。

添加COREHOST_TRACE=1 并收到以下输出:

Processing TPA for deps entry [Microsoft.ApplicationInsights.AspNetCore, 2.0.0, lib/netstandard1.6/Microsoft.ApplicationInsights.AspNetCore.dll]
  Considering entry [Microsoft.ApplicationInsights.AspNetCore/2.0.0/lib/netstandard1.6/Microsoft.ApplicationInsights.AspNetCore.dll] and probe dir [/packagescache/x64]
The hash file is invalid [/packagescache/x64/Microsoft.ApplicationInsights.AspNetCore/2.0.0/Microsoft.ApplicationInsights.AspNetCore.2.0.0.nupkg.sha512]
    Skipping... match hash failed
  Considering entry [Microsoft.ApplicationInsights.AspNetCore/2.0.0/lib/netstandard1.6/Microsoft.ApplicationInsights.AspNetCore.dll] and probe dir [/packagescache]
The hash file is invalid [/packagescache/Microsoft.ApplicationInsights.AspNetCore/2.0.0/Microsoft.ApplicationInsights.AspNetCore.2.0.0.nupkg.sha512]
    Skipping... match hash failed
Error: assembly specified in the dependencies manifest was not found -- package: 'Microsoft.ApplicationInsights.AspNetCore', version: '2.0.0', path: 'lib/netstandard1.6/Microsoft.ApplicationInsights.AspNetCore.dll'

【问题讨论】:

标签: docker asp.net-core .net-core azure-application-insights


【解决方案1】:

我通过执行发布文件夹中的应用程序解决了这个问题。例如,如果您在 Ubuntu 16.04 的发布模式下发布 .net core 1.1 应用程序,您发布的文件将位于

\bin\release\netcoreapp1.1\ubuntu.16.04-x64

此目录中有一个可执行文件,但这不是您要使用的可执行文件。您实际上需要深入一个目录并使用

中的可执行文件

\bin\release\netcoreapp1.1\ubuntu.16.04-x64\publish

【讨论】:

    【解决方案2】:

    我在 Docker 容器中运行我的 aspnet 核心应用程序时遇到了类似的问题。我已经从 Dotnet core 1.1 升级到了 aspnet core 2。

    我不得不更改我的 Dockerfile 库以使用 Microsoft/aspnet 而不是 Microsoft/Dotnet,因为 Dotnet 库没有所有的 aspnet 库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-16
      相关资源
      最近更新 更多