在 RHEL 8 中使用 .NET
对红帽文档提供反馈
我们感谢您对我们文档的反馈。让我们了解如何改进它。
通过 Jira 提交反馈(需要帐户)
- 登录到 Jira 网站。
- 在顶部导航栏中点 Create
- 在 Summary 字段中输入描述性标题。
- 在 Description 字段中输入您对改进的建议。包括文档相关部分的链接。
- 点对话框底部的 Create。
第 1 章 .NET 9.0 简介
.NET 是一个通用开发平台,它带有自动内存管理和现代编程语言。使用 .NET,您可以有效地构建高质量的应用程序。.NET 可通过认证的容器在 Red Hat Enterprise Linux (RHEL)和 OpenShift Container Platform 上提供。
.NET 提供以下功能:
- 能够遵循基于微服务的方法,其中某些组件使用 .NET 构建,其他组件则使用 Java 构建,但所有组件都可以在 RHEL 和 OpenShift Container Platform 上的通用支持的平台中运行。
- 在 Microsoft Windows 上更轻松地开发新的 .NET 工作负载的能力。您可以在 RHEL 或 Windows Server 上部署并运行应用程序。
- 一个异构的数据中心,底层基础结构可以在不需要依赖 Windows 服务器的情况下运行 .NET 应用程序。
第 2 章 安装 .NET 9.0
.NET 9.0 包括在 RHEL 8 的 AppStream 存储库中。在 RHEL 8 系统中默认启用 AppStream 软件仓库。
您可以使用最新的 9.0 软件开发套件(SDK)安装 .NET 9.0 运行时。当较新的 SDK 可供 .NET 9.0 使用时,您可以运行 sudo dnf install
来安装它。
先决条件
安装并注册了附加订阅的 RHEL 8.10。
如需更多信息,请参阅 从安装介质交互式安装 RHEL。
流程
安装 .NET 9.0 及其所有依赖项:
$ sudo dnf install dotnet-sdk-9.0 -y
验证
验证安装:
$ dotnet --info
输出返回有关 .NET 安装和环境的相关信息。
第 3 章 使用 .NET 9.0 创建应用程序
了解如何创建 C""Hello World"应用程序。
流程
在名为
my-app
的目录中创建一个新的 Console 应用程序:$ dotnet new console --output my-app
运行项目:
$ dotnet run --project my-app
输出返回:
Hello World!
第 4 章 使用 .NET 9.0 发布应用程序
.NET 9.0 应用程序可以发布,以使用共享的系统范围 .NET 版本,或包含 .NET。
发布 .NET 9.0 应用程序有以下方法:
- 自助包含部署(SCD)- 应用程序包括 .NET。此方法使用 Microsoft 构建的运行时。
- 框架依赖的部署(FDD)- 应用程序使用共享的系统范围版本 .NET。
当为 RHEL 发布应用程序时,红帽建议使用 FDD,因为它确保应用程序使用最新的 .NET 版本(由红帽构建)来使用一组原生依赖项。
先决条件
现有 .NET 应用程序。
有关如何创建 .NET 应用程序的更多信息,请参阅使用 .NET 创建应用程序。
4.1. 发布 .NET 应用程序
以下流程概述了如何发布与框架相关的应用程序。
流程
发布与框架相关的应用程序:
$ dotnet publish my-app -f net9.0
将 my-app 替换为您要发布的应用程序的名称。
可选:如果应用程序仅适用于 RHEL,请修剪其他平台所需的依赖项:
$ dotnet publish my-app -f net9.0 -r rhel.8-architecture --self-contained false
根据您使用的平台替换 构架 :
-
对于 Intel:
x64
-
对于 IBM Z 和 LinuxONE:
s390x
-
对于 64 位 Arm:
arm64
-
对于 IBM Power:
ppc64le
-
对于 Intel:
第 5 章 在容器中运行 .NET 9.0 应用程序
使用 ubi8/dotnet-90-runtime
镜像在 Linux 容器中运行 .NET 应用程序。
以下示例使用 Podman。
流程
在名为
mvc_runtime_example
的目录中创建一个新的 MVC 项目:$ dotnet new mvc --output mvc_runtime_example
发布项目:
$ dotnet publish mvc_runtime_example -f net9.0 /p:PublishProfile=DefaultContainer /p:ContainerBaseImage=registry.access.redhat.com/ubi8/dotnet-90-runtime:latest
运行您的镜像:
$ podman run -rm -p8080:8080 mvc_runtime_example
查看容器中运行的应用程序:
$ xdg-open http://127.0.0.1:8080
第 6 章 从以前的 .NET 版本迁移
6.1. 从以前的 .NET 版本迁移
Microsoft 提供了从以前的 .NET Core 版本迁移的说明。
如果您使用不再支持的 .NET 版本,或希望迁移到较新的 .NET 版本以扩展功能,请参阅以下文章:
- 从 ASP.NET Core 8.0 迁移到 9.0
- 从 ASP.NET Core 7.0 迁移到 8.0
- 从 ASP.NET Core 6.0 迁移到 7.0
- 从 ASP.NET Core 5.0 迁移到 6.0
- 从 ASP.NET Core 3.1 迁移到 5.0
- 从 ASP.NET Core 3.0 迁移到 3.1
- 从 ASP.NET Core 2.2 迁移到 3.0
- 从 ASP.NET Core 2.1 迁移到 2.2
- 从 .NET Core 2.0 迁移到 2.1
- 从 ASP.NET 迁移到 ASP.NET Core
- 从 project.json 迁移 .NET Core 项目
- 从 project.json 迁移到 .csproj 格式
如果从 .NET Core 1.x 迁移到 2.0,请参阅从 ASP.NET Core 1.x 迁移到 2.0 中的前几个相关部分。这些部分提供了 .NET Core 1.x 到 2.0 迁移路径的指导。
6.2. 从 .NET Framework 移植
从 .NET Framework 迁移时,请参考以下 Microsoft 文章:
- 有关常规指南,请参阅从 .NET Framework 移植到 .NET Core。
- 有关移植库,请参阅 移植到 .NET Core - Libraries。
- 有关迁移到 ASP.NET Core,请参阅 迁移到 ASP.NET Core。
.NET Framework 中存在的一些技术和 API 不在 .NET Core 和 .NET 中。如果您的应用程序或库需要这些 API,请考虑查找替代方案或继续使用 .NET Framework..NET Core 和 .NET 不支持以下技术和 API:
- 桌面应用程序,如 Windows Forms 和 Windows 演示基础(WPF)
- 支持 Windows 通信基础(WCF)服务器(WCF 客户端)
- .NET 远程
另外,一些 .NET API 只能在 Microsoft Windows 环境中使用。以下列表显示了这些 Windows 特定 API 的示例:
-
Microsoft.Win32.Registry
-
System.AppDomains
-
System.Security.Principal.Windows
Microsoft.Windows.Compatibility NuGet 软件包中可能提供了默认版本的 .NET 不支持的几个 API。使用此 NuGet 软件包时要小心。提供的一些 API (如 Microsoft.Win32.Registry
)仅适用于 Windows,使您的应用程序与 Red Hat Enterprise Linux 不兼容。