Невозможно найти зависимость приложения 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'
Ответы
Ответ 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-библиотек.