Windows 服务器:找不到指定的框架 'Microsoft.AspNetCore.App',版本“2.1.0”

Windows Server: The specified framework 'Microsoft.AspNetCore.App', version '2.1.0' was not found

我正在尝试通过 运行 在我的 Windows 服务器 (2012 R2) 上 运行 一个 dotnet 核心 api (2.1.0) 执行以下命令: 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

当我使用相同的命令 (dotnet Api.dll) 时,api 运行 通常在我的 mac 上。当我使用 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.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 核心 运行time 和 sdk。知道我做错了什么吗?

Could it be because its looking for Microsoft.AspNetCore.App and I got Microsoft.NETCore.App 2.1.0 installed?

是的,你是对的。您安装了适当的 Microsoft.NETCore.App 运行时,但没有安装 Microsoft.AspNetCore.App 运行时。 Here is the link of ASP.NET Core x64 runtime Installer and here 是主下载页面的 link。安装成功后,您的 dotnet --info 命令输出应该类似于下面的屏幕截图。

好的,我找到原因了。我有一个 .net 核心控制台应用程序。为了 DI 目的,我为 HostBuilder 引入了 'Microsoft.AspNetCore.App'。

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" />

不,我可以在 docker 中 运行 作为控制台应用程序并获取依赖项注入和日志记录。

吉娜