Windows Server: указанная платформа «Microsoft.AspNetCore.App», версия «2.1.0» не найдена

Я пытаюсь запустить dotnet core API (2.1.0) на моем Windows Server (2012 R2), выполнив следующую команду: dotnet Api.dll Но я продолжаю получать следующее сообщение.

The specified framework 'Microsoft.AspNetCore.App', version '2.1.0' 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

API работает нормально на моем Mac, когда я использую ту же команду (dotnet Api.dll). Когда я использую dotnet --info, я получаю следующее, и в нем говорится, что установлена ​​​​последняя среда выполнения и SDK.

Runtime Environment:
 OS Name:     Windows
 OS Version:  6.3.9600
 OS Platform: Windows
 RID:         win81-x64
 Base Path:   C:\Program Files\dotnet\sdk\2.1.300\

Host (useful for support):
  Version: 2.1.0
  Commit:  caa7b7e2ba

.NET Core SDKs installed:
  2.1.201 [C:\Program Files\dotnet\sdk]
  2.1.300 [C:\Program Files\dotnet\sdk]

.NET Core runtimes installed:
  Microsoft.NETCore.App 2.0.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.
App]
  Microsoft.NETCore.App 2.0.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.
App]
  Microsoft.NETCore.App 2.1.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.
App]

To install additional .NET Core runtimes or SDKs:
  https://aka.ms/dotnet-download

Уже пытался добавить часть PublishWithAspNetCoreTargetManifest и опубликовать заново. Это дало мне больше файлов при публикации, но не сработало для моей текущей проблемы.

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
->  <PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest> <-
  </PropertyGroup>
  <ItemGroup>
    <Folder Include="wwwroot\" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.0" />
    ....

Может быть потому, что он ищет Microsoft.AspNetCore.App, а у меня установлен Microsoft.NETCore.App 2.1.0? Я действительно не знаю, я знаю, что установлена ​​​​последняя среда выполнения ядра .NET и SDK. Любая идея, что я делаю неправильно?


person Tom Aalbers    schedule 17.06.2018    source источник


Ответы (2)


Может быть, это потому, что он ищет Microsoft.AspNetCore.App, а у меня установлен Microsoft.NETCore.App 2.1.0?

Да вы правы. У вас установлена ​​соответствующая среда выполнения Microsoft.NETCore.App, но не среда выполнения Microsoft.AspNetCore.App. Здесь находится ссылка на установщик среды выполнения ASP.NET Core x64 и здесь это ссылка на главную страницу загрузки. После успешной установки вывод вашей команды dotnet --info должен быть похож на скриншот ниже.

введите описание изображения здесь

person ThePretendProgrammer    schedule 22.06.2018
comment
Благодарю вас! После установки и нескольких исправлений отсутствующих файлов API работает правильно. Стоит награды :thumbsup: - person Tom Aalbers; 22.06.2018

Хорошо, я нашел причину. У меня есть консольное приложение .net core. Я ввел «Microsoft.AspNetCore.App» для HostBuilder для целей DI.

Microsoft.AspNetCore.App несовместим с консольными приложениями Docker.

Вместо этого лучше использовать отдельные необходимые библиотеки:

<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.5" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="2.1.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="2.1.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.1.1" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="2.1.1" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="2.1.1" />

Нет, я могу запускать докер как консольное приложение и получать внедрение зависимостей и ведение журнала.

Джина

person Gina Marano    schedule 05.12.2018