推荐阅读
  • 编写单元测试的最佳做法

    备注 自版本 2.x 起,xUnit 已删除 SetUp 和 TearDown

  • 使 .NET Core 应用程序容器化

    备注 本教程不适用于 ASP.NET Core 应用 。 如果使用的是 ASP.NET Core,请参阅教程了解如何容器化 ASP.NET Core 应用程序。

  • 检查已安装的版本

    本文内容 本文介绍如何检查计算机上安装的 .NET Core 运行时和 SDK 的版本。 如果你拥有一个集成开发环境(如 Visual Studio 或 Visual Studio for Mac),则可能已安装 .NET core。安装 SDK 便会安装相应

  • .NET Core 简介

    本文内容 .NET Core 是一个通用的开放源代码开发平台。 可以使用多种编程语言针对 x64、x86、ARM32 和 ARM64 处理器创建适用于 Windows、macOS 和 Linux 的 .NET Core 应用。 为云、IoT、客户端 UI 和机器

  • 概述 ASP.NET 4.x 文档

    本文内容 ASP.NET 是一个免费的 web 框架,用于使用 HTML、CSS 和 JavaScript 构建强大的网站和 web 应用程序。 还可以创建 Web Api 并使用 Web 套接字等实时技术。ASP.NET Core是 ASP.NET 的一种替

  • 在 ASP.NET Core 应用中使用数据

    “数据很宝贵,它的持续时间长于系统本身。” Tim Berners-Lee

  • .NET Core 3.1 的新增功能

    本文内容 本文介绍了 .NET Core 3.1 中的新增功能。 此版本包含对 .NET Core 3.0 的细微改进,重点介绍小型但重要的修复。 .NET Core 3.1 中最重要的特性为,它是长期支持 (LTS) 版本。如果使用的是 Visual Stu

  • .NET Core 3.0 的新增功能

    备注 ARM64 尚未提供 Windows 支持。

  • 在 Visual Studio 中创建 Hello World 应用

    本文内容 本教程演示如何在 Visual Studio 2019 中创建和运行 .NET Core 控制台应用程序。先决条件安装了具有“.NET Core 跨平台开发”工作负载的 Visual Studio 2019 版本 16.6 或更高版本。 选择此工

  • 使用 Linux 包管理器进行安装

    本文内容 Ubuntu 支持 .NET Core。 本文介绍如何在 Ubuntu 上安装 .NET Core。 如果 Ubuntu 版本不受支持,则该版本不再支持 .NET Core。 不过,这些说明可能会帮助你让 .NET Core 在这些版本上运行,即使它不

选择要使用的 .NET Core 版本

本文介绍 .NET Core 工具、SDK 和运行时在选择版本时所使用的策略。 这些策略可通过使用指定版本,使正在运行的应用程序之间达到平衡,同时实现开发人员和最终用户计算机的轻松升级。 这些策略执行以下操作:

  • 实现 .NET Core 的轻松高效部署,包括安全性和可靠性更新。
  • 使用独立于目标运行时的最新工具和命令。

需要选择版本的情况如下:

本文档其余部分将介绍这四种方案。

SDK 使用最新安装的版本

SDK 命令包括 dotnet newdotnet run .NET Core CLI 必须为每个 dotnet 命令选择 SDK 版本。 即使在以下情况下,它也会默认使用计算机上安装的最新 SDK:

  • 项目面向早期 .NET Core 运行时版本。
  • .NET Core SDK 的最新版本是预览版本。

面向较旧的 .NET Core 运行时版本时,可利用最新的 SDK 功能和功能改进。 可在不同项目上面向 .NET Core 的多个运行时版本,同时对所有项目使用相同的 SDK 工具。

在少数情况下,可能需要使用版本较旧的 SDK。 global.json 文件中指定该版本。 “使用最新”策略表示仅使用 global.json 指定早于最新安装版本的一个 .NET Core SDK 版本。

可将 global.json 放置在文件层次结构中的任何位置。 CLI 从项目目录中向上搜索其找到的第一个 global.json。 由用户控制对哪些项目应用给定的 global.json(按其在文件系统中的位置)。 .NET CLI 从当前工作目录路径向上导航,以迭代方式搜索 global.json 文件。 找到的第一个 global.json 文件指定要使用的版本。 如果已安装该 SDK 版本,则使用该版本。 如果找不到 global.json 中指定的 SDK,则 .NET CLI 将使用匹配规则来选择兼容的 SDK,如果找不到,则会失败。

下面的示例演示 global.json 语法:

{
  "sdk": {
    "version": "3.0.0"
  }
}

选择 SDK 版本的过程如下:

  1. dotnet 从当前工作目录向下导航路径,以迭代方式搜索 global.json 文件。
  2. dotnet 使用所找到的第一个 global.json 中指定的 SDK。
  3. 如果未找到 global.json,dotnet 使用最新安装的 SDK。

有关选择 SDK 版本的详细信息,可参阅 global.json 相关文章的匹配规则部分。

目标框架名字对象用于定义生成时 API

针对在“目标框架名字对象”(TFM) 中定义的 API 构建项目。 在项目文件中指定目标框架 按如下示例所示,设置项目文件中的 TargetFramework 元素:

<TargetFramework>netcoreapp3.0</TargetFramework>

可能会针对多个 TFM 构建项目。 对库设置多个目标框架更为常见,但也可对应用程序执行此操作。 指定 TargetFrameworks 属性(TargetFramework 的复数形式)。 目标框架以分号分隔,如下例所示:

<TargetFrameworks>netcoreapp3.0;net47</TargetFrameworks>

给定的 SDK 支持固定的一组框架,其中的上限框架为 SDK 附带的运行时的目标框架。 例如,.NET Core 3.0 SDK 包含 .NET Core 3.0 运行时,该运行时是 netcoreapp3.0 目标框架的一个实现。 .NET Core 3.0 SDK 支持 netcoreapp2.1netcoreapp2.2netcoreapp3.0,但不支持 netcoreapp3.1(或更高版本)。 安装 .NET Core 3.1 SDK 以针对 netcoreapp3.1 进行构建。

.NET Standard 目标框架中的上限框架同样是 SDK 附带的运行时的目标框架。 .NET Core 3.1 SDK 的上限为 netstandard2.1 有关详细信息,请参阅 .NET Standard

依赖于框架的应用会前滚

在使用 dotnet run 从源运行应用程序时,在使用 dotnet myapp.dll框架相关部署运行应用程序时,或使用 myapp.exe框架相关可执行文件运行应用程序时,dotnet 可执行文件是应用程序的主机。

该主机选择计算机上安装的最新修补程序版本。 例如,如果在项目文件中指定 netcoreapp3.0,并且 3.0.2 是安装的最新 .NET 运行时,则使用 3.0.2 运行时。

如果未找到可接受的 3.0.* 版本,则使用新的 3.* 版本。 例如,如果指定了 netcoreapp3.0 并且仅安装了 3.1.0,则应用程序在运行时使用 3.1.0 运行时。 此行为称为“次要版本前滚”。 此外,不会考虑较低版本。 如果未安装可接受的运行时,应用程序将不会运行。

如果你面向版本 3.0,则下面几个使用示例展示了此行为:

  • ?? 指定 3.0。 3.0.3 是安装的最高修补程序版本。 使用 3.0.3。
  • ? 指定 3.0。 未安装 3.0.* 版本。 2.1.1 是安装的最高运行时版本。 会显示一条错误消息。
  • ?? 指定 3.0。 未安装 3.0.* 版本。 3.1.0 是安装的最高运行时版本。 使用 3.1.0。
  • ? 指定 2.0。 未安装 2.x 版本。 3.0.0 是安装的最高运行时版本。 会显示一条错误消息。

次要版本回滚会产生一个可能影响最终用户的副作用。 请参考以下方案:

  1. 应用程序指定需要版本 3.0。
  2. 运行时,未安装 3.0.*,安装的是 3.1.0。 将使用版本 3.1.0。
  3. 稍后,用户重新安装 3.0.3 和运行应用程序,而现将使用版本 3.0.3。

3.0.3 和 3.1.0 可能具有不同行为,序列化二进制数据等方案中尤其如此。

独立部署包括所选的运行时

可以将应用程序作为独立分发进行发布。 此方法可将 .NET Core 运行时和库与应用程序进行捆绑。 独立部署不具有对运行时环境的依赖关系。 在发布时(而不是运行时)选择运行时版本。

发布进程将选择给定运行时系列中的最新修补程序版本。 例如,dotnet publish 将选择 .NET Core 3.0.3(如果它是 .NET Core 3.0 运行时系列中的最新修补程序版本)。 目标框架(包括最新安装的安全修补程序)与应用程序捆绑打包。

如果为应用程序指定的最新版本不满足要求,会出现错误。 dotnet publish 绑定到最新的运行时修补程序版本(在给定的主要及次要版本系列内)。 dotnet publish 不支持 dotnet run 的前滚语义。 有关修补程序和独立部署的详细信息,请参阅有关 .NET Core 应用程序部署中运行时修补程序选择的文章。

独立部署可能需要特定修补程序版本。 可以重写项目文件中的最低运行时修补程序版本(重写为更高或更低版本),如下例所示:

<RuntimeFrameworkVersion>3.0.3</RuntimeFrameworkVersion>

RuntimeFrameworkVersion 元素重写默认版本策略。 对于独立部署,RuntimeFrameworkVersion 指定确切的运行时框架版本。 对于依赖于框架的应用程序,RuntimeFrameworkVersion 指定所需的最低运行时框架版本。

请参阅

关于我们 免责声明 联系我们
Copyright © 2021 爱学习网 浙ICP备18049359号 网站地图 Google地图