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. У вас есть два варианта, чтобы это исправить.

  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>

Вы также можете передать это в командной строке.

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

Я надеюсь, что это может помочь кому-то еще решить их проблемы.