无法在 Windows Server 2016 上 运行 .NET Core 2.1(.1) 应用程序

Can't run .NET Core 2.1(.1) application on Windows Server 2016

我正在尝试 运行 我的 Windows Server 2016 实例上的 .NET Core 应用程序。它 builds/runs 在我的 Windows 10 机器上很好。

首先,我正在做 dotnet publish 并将已发布的站点复制到 Windows 服务器实例。我按照 this guide 安装了 托管包 以及 最新的 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 版本?

非常感谢任何指导。

使用这个link安装2.1.1核心sdk版本:

https://github.com/dotnet/versions/tree/7a833dddfddc27f2074b755b94234a25b9757637/build-info/dotnet/product/cli/release/2.1

发布 Microsoft.AspNetCore.All 包时似乎出现了一些问题,它没有设置为随 VS update/Core SDK 安装自动安装。至少不适合我。 nuget 包也是在 10 小时前添加的,下载量为 0。所以默认情况下我们仍然坚持使用 2.1.0。要解决此问题,我做的第一件事是检查 ASP.NET 网络应用程序模板使用的内容(它们会不断更改默认值,因此如果您有一个要更新的旧项目,检查默认值的更改总是很方便也有模板)。

我的解决方法是从 .csproj 文件的标记中删除 Version 参数,就像现在在默认模板中所做的那样。原文:

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

修改后:

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

这将基本上解析为最新安装的版本,即目前为 2.1.0。很可能 2.1.1 将在以后的更新中安装。您也可以尝试手动安装最新的软件包,但我建议尽可能使用默认设置。这样以后的更新不太可能破坏我的系统。

您有两个选择:

  1. 在服务器上安装2.1.1框架(在另一个回答中提到)

  2. 使用所有必需的资产发布您的应用程序。您可以使用以下命令执行此操作:

    dotnet publish --self-contained