在 RHEL 8 中使用 .NET


.NET 9.0

在 RHEL 8 上安装并运行 .NET 9.0

Red Hat Customer Content Services

摘要

本指南论述了如何在 RHEL 8 上安装和运行 .NET 9.0。

对红帽文档提供反馈

我们感谢您对我们文档的反馈。让我们了解如何改进它。

通过 Jira 提交反馈(需要帐户)

  1. 登录到 Jira 网站。
  2. 在顶部导航栏中点 Create
  3. Summary 字段中输入描述性标题。
  4. Description 字段中输入您对改进的建议。包括文档相关部分的链接。
  5. 点对话框底部的 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 来安装它。

先决条件

流程

  • 安装 .NET 9.0 及其所有依赖项:

    $ sudo dnf install dotnet-sdk-9.0 -y

验证

  • 验证安装:

    $ dotnet --info

    输出返回有关 .NET 安装和环境的相关信息。

第 3 章 使用 .NET 9.0 创建应用程序

了解如何创建 C""Hello World"应用程序。

流程

  1. 在名为 my-app 的目录中创建一个新的 Console 应用程序:

    $ dotnet new console --output my-app
  2. 运行项目:

    $ 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 版本(由红帽构建)来使用一组原生依赖项。

先决条件

4.1. 发布 .NET 应用程序

以下流程概述了如何发布与框架相关的应用程序。

流程

  1. 发布与框架相关的应用程序:

    $ dotnet publish my-app -f net9.0

    my-app 替换为您要发布的应用程序的名称。

  2. 可选:如果应用程序仅适用于 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

第 5 章 在容器中运行 .NET 9.0 应用程序

使用 ubi8/dotnet-90-runtime 镜像在 Linux 容器中运行 .NET 应用程序。

以下示例使用 Podman。

流程

  1. 在名为 mvc_runtime_example 的目录中创建一个新的 MVC 项目:

    $ dotnet new mvc --output mvc_runtime_example
  2. 发布项目:

    $ dotnet publish mvc_runtime_example -f net9.0 /p:PublishProfile=DefaultContainer /p:ContainerBaseImage=registry.access.redhat.com/ubi8/dotnet-90-runtime:latest
  3. 运行您的镜像:

    $ podman run -rm -p8080:8080 mvc_runtime_example
  4. 查看容器中运行的应用程序:

    $ xdg-open http://127.0.0.1:8080

第 6 章 从以前的 .NET 版本迁移

6.1. 从以前的 .NET 版本迁移

Microsoft 提供了从以前的 .NET Core 版本迁移的说明。

如果您使用不再支持的 .NET 版本,或希望迁移到较新的 .NET 版本以扩展功能,请参阅以下文章:

注意

如果从 .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 中存在的一些技术和 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 不兼容。

法律通告

Copyright © 2021 Red Hat, inc.
本文档内容及图解由红帽根据 Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA")授权。http://creativecommons.org/licenses/by-sa/3.0/ 中提供了CC-BY-SA 的说明。根据 CC-BY-SA,如果发布本文档或提供此文档,则必须提供原始版本的 URL。
作为本文档的许可者,红帽可能会放弃强制制执行 CC-BY-SA 第4d 条款,且不声明该条款在适用条款允许的最大限度内有效。
Red Hat、Red Hat Enterprise Linux、Shadowman 徽标、红帽徽标、JBoss、OpenShift、Fedora、Infinity 徽标和 RHCE 是 Red Hat, Inc. 在美国和其他国家注册的商标。
Linux® 是 Linus Torvalds 在美国和其它国家注册的商标。
Java® 是 Oracle 和/或其附属公司注册的商标。
XFS® 是 Silicon Graphics International Corp. 或其子公司在美国和/或其他国家的商标。
MySQL® 是 MySQL AB 在美国、美国和其他国家注册的商标。
Node.js® 是 Joyent 的官方商标。红帽与官方 Joyent Node.js 开源社区或商业项目没有正式的关系或认可。
OpenStack® Word Mark 和 OpenStack 徽标是 OpenStack Foundation 在美国及其他国家注册的商标/服务标记或商标/服务标记,在 OpenStack Foundation 许可的情况下使用。我们不附属于 OpenStack Foundation 或 OpenStack 社区。
IBM® 和 IBM Z® 是国际商业 Machine Corp. 的商标或注册商标,在全球很多 jurisdictions 中进行了注册。
所有其他商标均由其各自所有者所有。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.