ASP.NET Core 2: отсутствует ApplicationInsights
Я публикую приложение 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 (у меня было только время исполнения), и все началось. Не уверен, что это лучшее решение.
Ответы
Ответ 1
Ожидается, что эта сборка будет в местном хранилище времени выполнения
Вы получаете эту ошибку, потому что у вас не установлено 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
Обновление: 25 июня 2018 г.
Этот ответ относится только к проектам ASP.NET Core 2.0. В ASP.NET Core 2.1 больше нет хранилища времени выполнения.
Ответ 2
Убедитесь, что в вашем проекте совпадают версии для Microsoft.NETCore.App (целевая структура вашего проекта) и Microsoft.AspNetCore.All (зависимость NuGet включена по умолчанию для проектов .NET Core 2.0) или Microsoft.AspNetCore.App (для .NET Core 2 1+ проекты).
Если вы когда-либо обновляли целевую инфраструктуру вашего проекта с .NET Core 2.0 до .Net Core 2.1, не забудьте соответствующим образом обновить зависимости NuGet, поскольку они не будут обновляться автоматически.
Ответ 3
Эта проблема обсуждается очень подробно здесь: 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 Мб до 55 Мб с этим переключателем. Но, по крайней мере, это работает, пока нет лучшего решения.
Ответ 4
Я хочу добавить что-то к ответу @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
Я надеюсь, что это может помочь кому-то еще решить их проблемы.