RHEL 10 中使用 .NET 9.0
对红帽文档提供反馈
我们感谢您对我们文档的反馈。让我们了解如何改进它。
通过 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 10 的 AppStream 存储库中。AppStream 软件仓库在 RHEL 10 系统中默认启用。
您可以使用最新的 .NET Software Development Kit (SDK)安装 .NET 9.0 运行时。当较新的 SDK 可供 .NET 9.0 使用时,您可以使用 dnf
安装它。
先决条件
安装并注册了附加订阅的 RHEL 10。
如需更多信息,请参阅 从安装介质交互式安装 RHEL。
流程
安装 .NET 9.0 及其所有依赖项:
sudo dnf install dotnet-sdk-9.0 -y
$ sudo dnf install dotnet-sdk-9.0 -y
Copy to Clipboard Copied!
验证
验证安装:
dotnet --info
$ dotnet --info
Copy to Clipboard Copied! 输出返回有关 .NET 安装和环境的相关信息。
第 3 章 使用 .NET 9.0 创建应用程序
了解如何创建 C""Hello World"应用程序。
流程
在名为
my-app
的目录中创建一个新的 Console 应用程序:dotnet new console --output <my-app>
$ dotnet new console --output <my-app>
Copy to Clipboard Copied! 运行项目:
dotnet run --project <my-app>
$ dotnet run --project <my-app>
Copy to Clipboard Copied! 输出返回:
Hello World!
Hello World!
Copy to Clipboard Copied!
第 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 9.0 应用程序
以下流程概述了如何发布与框架相关的应用程序。
流程
发布与框架相关的应用程序:
dotnet publish <my-app> -f net9.0
$ dotnet publish <my-app> -f net9.0
Copy to Clipboard Copied! 注意将
<my-app
> 替换为您要发布的应用程序的名称。可选:如果应用程序仅适用于 RHEL,请修剪其他平台所需的依赖项:
dotnet publish <my-app> -f net9.0 -r rhel.10-architecture --self-contained false
$ dotnet publish <my-app> -f net9.0 -r rhel.10-architecture --self-contained false
Copy to Clipboard Copied! 根据您使用的平台替换 构架 :
-
对于 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 new mvc --output mvc_runtime_example
Copy to Clipboard Copied! 发布项目:
dotnet publish mvc_runtime_example -f net9.0 /p:PublishProfile=DefaultContainer /p:ContainerBaseImage=registry.access.redhat.com/ubi8/dotnet-90-runtime:latest
$ dotnet publish mvc_runtime_example -f net9.0 /p:PublishProfile=DefaultContainer /p:ContainerBaseImage=registry.access.redhat.com/ubi8/dotnet-90-runtime:latest
Copy to Clipboard Copied! 运行您的镜像:
podman run -rm -p8080:8080 mvc_runtime_example
$ podman run -rm -p8080:8080 mvc_runtime_example
Copy to Clipboard Copied! 查看容器中运行的应用程序:
xdg-open http://127.0.0.1:8080
$ xdg-open http://127.0.0.1:8080
Copy to Clipboard Copied!
第 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 不兼容。