.NET Core 1.0 应用程序不会 运行 在 .NET Core 1.1 系统上

.NET Core 1.0 app won't run on .NET Core 1.1 system

我有一个程序正在尝试迁移到 .NET Standard/Core。该库的命令行界面是使用 netcoreapp1.0 的目标框架构建的。我尝试将其发送给只安装了 .NET Core 1.1 的测试人员(使用不同的 OS)。该程序不会运行,并给出错误:

The specified framework 'Microsoft.NETCore.App', version '1.0.1' was not found.
- Check application dependencies and target a framework version installed at:
  /usr/share/dotnet/shared/Microsoft.NETCore.App
- The following versions are installed:
  1.1.0
- Alternatively, install the framework version '1.0.1'.

这是预期的吗?据我了解,每个 Core/Standard 版本都是前一个版本的严格超集。因此,我希望针对 1.0 的程序在 1.1 的系统上仍然 运行,而不是必须针对每个安装版本进行多目标。

更一般地说,我如何进行设置,这样我就不必担心用户稍后使用新版本的 .NET Core 无法 运行 程序?

您缺少 global.json。将一个添加到您的项目中,以便应用程序知道使用 1.0.0 运行时而不是 1.1 启动。

你需要再了解几个概念。

  1. 如果您正确使用 dotnet publish,.NET Core 应用程序将变得独立。然后在没有安装 .NET Core 的目标机器上(或者没有安装它所针对的版本),应用程序可以 运行 没有问题。根据您的描述,您可能忘记这样做或者您没有尝试发布此应用程序。

  2. 如果您的目的只是将基于 .NET Core 1.0.1 的代码移动到另一台机器,而该机器只安装了 1.1.0,那么您应该能够 运行 dotnet-install 脚本安装所需 运行 时间,

https://docs.microsoft.com/en-us/dotnet/articles/core/preview3/tools/dotnet-install-script

既然您已经在使用 Visual Studio 2017 RC,您应该知道 .NET Core 1.0.x 现在应该是 1.0.3。对 1.0.0-1.0.2 的支持已过期。