Подтвердить что ты не робот

Невозможно найти зависимость приложения Insights от образа докеров после публикации dotnet

При попытке запустить приложение из образа докеры я получаю следующую ошибку:

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 restore и dotnet publish на изображении докеры microsoft/aspnetcore-build:1.1.0-projectjson

В "targets" в {app}.deps.json у меня есть:

  "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 в корне моего опубликованного вывода.

Мне кажется, что я пропустил что-то очевидное. Любая помощь будет оценена.

Update:

Обновление Application Insights до 2.0.0 не влияет.

Удаление информации о приложениях просто переносит проблему на другую сборку.

Переход на автономное развертывание не влияет.

Добавлено 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'
4b9b3361

Ответ 1

Я решил эту проблему, выполнив приложение, найденное в папке публикации. Например, если вы публикуете приложение .net core 1.1 в режиме выпуска для Ubuntu 16.04, ваши опубликованные файлы будут находиться в

\ Bin\релизе\netcoreapp1.1\ubuntu.16.04-x64

В этом каталоге есть исполняемый файл, но это не тот исполняемый файл, который вы хотите использовать. Вам действительно нужно пойти в один каталог глубже и использовать исполняемый файл в

\ Bin\релизе\netcoreapp1.1\ubuntu.16.04-x64\публиковать

Ответ 2

У меня была аналогичная проблема с моим основным приложением aspnet в контейнере Docker. Я обновился от ядра Dotnet 1.1 до ядра aspnet 2.

Мне пришлось изменить базу Dockerfile, чтобы использовать Microsoft/aspnet, а не Microsoft/Dotnet, поскольку база Dotnet не имела всех aspnet-библиотек.