Не удается запустить приложение.NET Core 2.1 (.1) на Windows Server 2016

Я пытаюсь запустить приложение.NET Core на моем экземпляре Windows Server 2016. Он отлично работает/работает на моей машине с Windows 10.

Сначала я делаю dotnet publish и dotnet publish опубликованный сайт в экземпляр Windows Server. Я последовал этому руководству и установил как пакет хостинга, так и новейший SDK (2.1.3).

Однако, когда я пытаюсь установить dotnet myapp.dll я получаю следующее сообщение об ошибке:

It was not possible to find any compatible framework version
The specified framework 'Microsoft.AspNetCore.All', version '2.1.1' was not found.
  - Check application dependencies and target a framework version installed at:
      C:\Program Files\dotnet\
  - Installing .NET Core prerequisites might help resolve this problem:
      http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409
  - The .NET Core framework and SDK can be installed from:
      https://aka.ms/dotnet-download
  - The following versions are installed:
      2.1.0 at [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]

Я ясно вижу, что действительно Microsoft.AspNetCore.All имеет только версию 2.1.0 расположенную в Program Files\dotnet\shared. Как получить правильную версию 2.1.1?

Любое руководство высоко ценится.

Ответ 2

Похоже, что возникла некоторая проблема с публикацией пакета Microsoft.AspNetCore.All, и он не настроен на автоматическую установку с установкой VS update/Core SDK. По крайней мере не для меня. Пакет nuget также был добавлен всего 10 часов назад с 0 загрузками. Поэтому по умолчанию мы все еще придерживаемся 2.1.0. Чтобы исправить это, первое, что я сделал, это проверить, что используют шаблоны веб-приложений ASP.NET (они продолжают изменять значения по умолчанию, поэтому, если у вас старый проект, который вы обновляете, всегда полезно проверять изменения в шаблонах по умолчанию).

Исправление для меня - это удаление параметра Version из тега в файле.csproj, как это сделано в шаблоне по умолчанию. Оригинал:

<ItemGroup>
   <PackageReference Include="Microsoft.AspNetCore.All" Version="2.1.1" />
</ItemGroup>

После модификации:

<ItemGroup>
   <PackageReference Include="Microsoft.AspNetCore.All" />
</ItemGroup>

Это по существу решит последнюю установленную версию, то есть 2.1.0. Скорее всего, 2.1.1 будет установлен в последующих обновлениях. Вы также можете попробовать установить последний пакет вручную, но я рекомендую прибегать к умолчанию, когда это возможно. Таким образом, менее вероятно, что будущие обновления нарушат мою систему.

Ответ 3

У вас есть два варианта:

  1. Установите инфраструктуру 2.1.1 на сервере (как указано в другом ответе)

  2. Публикуйте свое приложение со всеми необходимыми активами. Вы можете сделать это с помощью следующей команды:

    dotnet publish --self-contained