.NET 7 现在可用 Fedora Linux。 本文简要介绍了 .NET 是什么、它的一些最新和有趣的功能、如何安装它,并提供了一些说明如何使用它的示例。
.NET 7
.NET 是用于构建跨平台应用程序的平台。 它允许您使用 C#、F# 或 VB.NET 编写代码。 您可以轻松地在一个平台上开发应用程序,并在另一个平台或架构上部署和执行它们。
特别是,您可以在 Windows 上开发应用程序并在 Fedora 取而代之的是 Linux! 如果您想从专有平台转移到 Fedora Linux。 也可以开发 Fedora 并部署到 Windows。 请注意,在最后一种情况下,某些特定于 Windows 的应用程序类型(例如 GUI Windows 应用程序)不可用。
.NET 7 包括许多令人兴奋的新功能。 它包括对运行时和 .NET 库的大量性能增强,用于处理 Unix 文件权限和 tar 文件的更好的 API,通过 OpenTelemetry 更好地支持可观察性,以及提前编译应用程序。 有关 .NET 7 中所有新功能的更多详细信息,请参阅 https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-7.
Fedora .NET 7 的 Linux 构建甚至可以在 IBM Power (ppc64le) 架构上运行。 这是对 64 位 ARM/Aarch64(其中 Fedora Linux 调用 aarch64 而 .NET 调用 arm64)、IBM Z (s390x) 和 64 位 Intel/AMD 平台(其中 Fedora Linux 调用 x86_64 而 .NET 调用 x64)。
.NET 7 是 Standard Term Support (STS) 版本,这意味着上游将在 2024 年 5 月停止维护它。.NET 在 Fedora Linux 将遵循该结束日期。 如果您想使用长期支持 (LTS) 版本,请改用 .NET 6。 .NET 6 将于 2024 年 11 月结束生命周期。有关 .NET 生命周期的更多详细信息,请参阅 https://dotnet.microsoft.com/en-us/platform/support/policy/dotnet-core.
如果您希望建立一个用于开发 .NET 应用程序的开发环境 Fedora Linux,看看 https://fedoramagazine.org/set-up-a-net-development-environment/。
这 .NET 特别兴趣小组 (DotNetSIG) 维护.NET Fedora Linux。 请加入我们一起改进 .NET Fedora Linux! 您可以通过 IRC (#fedora-开发) 或邮件列表 ([email protected]) 如果您有任何反馈、问题、想法或建议。
如何安装.NET 7
构建 C#、F# 或 VB.NET 代码 Fedora Linux,您将需要 .NET SDK。 如果您只想运行现有应用程序,则只需要 .NET 运行时。
使用以下命令安装 .NET 7 软件开发工具包 (SDK):
sudo dnf install -y dotnet-sdk-7.0
这将安装所有依赖项,包括 .NET 运行时。
如果不想安装整个 SKD 而只想运行 .NET 7 应用程序,您可以使用以下命令之一安装 ASP.NET Core 运行时或 .NET 运行时:
sudo dnf install -y aspnetcore-runtime-7.0 sudo dnf install -y dotnet-runtime-7.0
这种风格的包名称适用于所有版本的 .NET Fedora Linux。 为了 example,您可以使用相同样式的包名称安装 .NET 6:
sudo dnf install -y dotnet-sdk-6.0
要确保安装了 .NET 7,请运行 dotnet –info 以查看安装的所有 SDK 和运行时。
许可证和遥测
.NET 包在 Fedora Linux 是从完全开源的源代码构建的。 主要许可证是麻省理工学院。 .NET 包在 Fedora Linux 不包含任何封闭源代码或专有软件。 这 Fedora .NET 团队在 Fedora Linux 构建系统并在构建 .NET 之前删除源代码存储库中存在的所有二进制文件。 这使我们高度相信 .NET 是根据经过审查的来源构建的。
.NET 包在 Fedora Linux 不收集用户的任何数据。 所有遥测在 Fedora .NET 的构建。 不会从任何运行 .NET 的人那里收集任何数据,也不会向 Microsoft 发送任何数据。 我们运行测试来为每个 .NET 版本验证这一点 Fedora Linux。
.NET 中的“Hello World”
安装 .NET 7 后,您可以使用它来创建和运行应用程序。 为了 example,您可以使用以下步骤创建并运行经典的“Hello World”应用程序。
使用 C# 语言创建一个新的 .NET 7 项目:
dotnet new console -o HelloWorldConsole
这将创建一个名为 HelloWorldConsole 的新目录,并创建一个打印 hello world 的普通 C# Hello World。
然后,切换到项目目录:
cd HelloWorldConsole
最后,构建并运行您的应用程序:
dotnet run
.NET 7 将构建您的程序并运行它。 您应该从程序中看到“Hello world”输出。
.NET 中的“Hello Web”
您还可以使用 .NET 创建 Web 应用程序。 让我们现在开始吧。
首先,在一个单独的目录(不在我们之前的项目下)中创建一个新的 web 项目:
dotnet new web -o HelloWorldWeb
这将基于 .NET 的内置 Web(空 ASP.NET Core)模板创建一个简单的 Hello-World 样式应用程序。
现在,切换到该目录:
cd HelloWorldWeb
最后,构建并运行应用程序:
dotnet run
您应该会看到如下所示的输出,表明 Web 应用程序正在运行。
Building… info: Microsoft.Hosting.Lifetime[14] Now listening on: https://localhost:5105 info: Microsoft.Hosting.Lifetime[0] Application started. Press Ctrl+C to shut down. info: Microsoft.Hosting.Lifetime[0] Hosting environment: Development info: Microsoft.Hosting.Lifetime[0] Content root path: /home/omajid/temp/HelloWorldWeb
使用 Web 浏览器访问该应用程序。 您可以在“Now listening on:”行的输出中找到 URL。 在我的例子中是 https://localhost:5105:
firefox https://localhost:5105
您应该会在浏览器中看到一条“Hello World”消息。
将 .NET 与容器一起使用
此时,您已经在本地成功创建、构建和运行 .NET 应用程序。 如果您想隔离您的应用程序及其相关的一切怎么办? 如果您想在非Fedora 操作系统? 或者将其部署到公共/私有/混合云? 你可以使用容器! 让我们构建一个容器映像来运行您的 .NET 程序并对其进行测试。
首先,创建一个新项目:
dotnet new web -o HelloContainer
然后,切换到该项目目录:
cd HelloContainer
然后添加一个描述如何为我们的应用程序构建容器的 Dockerfile。
FROM fedora:37
RUN dnf install -y dotnet-sdk-7.0 && dnf clean all
RUN mkdir /HelloContainer/
WORKDIR /HelloContainer/
COPY . /HelloContainer/
RUN dotnet publish -c Release
ENV ASPNETCORE_URLS="https://0.0.0.0:8080"
CMD ["dotnet" , "bin/Release/net7.0/publish/HelloContainer.dll"]
这将从默认值开始 Fedora Linux 容器,在其中安装 .NET 7,将源代码复制到其中并使用容器中的 .NET 构建应用程序。 最后,它将进行设置,以便运行容器运行您的应用程序并通过端口 8080 公开它。
您可以直接构建和运行此容器。 但是,如果您熟悉 Dockerfiles,您可能会注意到它的效率非常低。 它将重新下载所有依赖项并根据对任何源文件的任何更改重新构建所有内容。 它在最后生成一个大型容器映像,其中甚至包含完整的 .NET SDK。 一种选择是使用多阶段构建来更快地迭代源代码。 您还可以在最后生成一个较小的容器,仅包含您的应用程序和 .NET 依赖项。
用这个覆盖 Dockerfile:
FROM registry.fedoraproject.org/fedora:37 as dotnet-sdk RUN dnf install -y dotnet-sdk-7.0 && dnf clean all FROM registry.fedoraproject.org/fedora:37 as aspnetcore-runtime RUN dnf install -y aspnetcore-runtime-7.0 && dnf clean all FROM dotnet-sdk as build-env RUN mkdir /src WORKDIR /src COPY *.csproj . RUN dotnet restore COPY . . RUN dotnet publish -c Release -o /publish FROM aspnetcore-runtime as app WORKDIR /publish COPY --from=build-env /publish . ENV ASPNETCORE_URLS="https://0.0.0.0:8080" EXPOSE 8080 ENTRYPOINT ["dotnet", "HelloContainer.dll"]
现在安装 podman,以便您可以构建和运行 Dockerfile:
sudo dnf install -y podman
构建容器镜像:
podman build -t hello-container .
现在,运行我们刚刚构建的容器:
podman run -it -p 8080:8080 hello-container
关于参数的注释。 该端口配置了 -p 标志,以便容器内部的端口 8080 也可用作外部的端口 8080。 这允许您直接连接到应用程序。 容器以交互方式运行 (-it),因此您可以看到输出和出现的任何错误。 将应用程序部署到生产环境时,通常不需要交互式运行。
最后,使用 Web 浏览器连接到容器。 为了 example:
firefox https://localhost:8080
您应该会看到一条“Hello World”消息。
恭喜! 您现在有一个在 Fedora 容器!
结论
这是 .NET 7 的旋风式概述 Fedora Linux 并涵盖使用 plain 构建和运行应用程序 Fedora RPM 包以及为 .NET 应用程序创建应用程序仅使用 Fedora Linux。
如果您有兴趣使用或改进 .NET Fedora Linux,请加入我们!