.NET 8 Preview 3已推出。它包括对构建路径、工作负载、Microsoft.Extensions 和容器的更改。它还包括针对 Arm64 的 JIT 和动态 PGO 的性能改进。如果您错过了 3 月份的预览版,您可能需要阅读预览版 2帖子。
您可以下载适用于 Linux、macOS 和 Windows 的.NET 8 Preview 3 。
查看预览版 3 中C#、ASP.NET Core、EF Core和.NET MAUI的新增功能。及时了解.NET 8 的新增功能。.NET 文档将在整个版本中更新。
.NET 8 已使用 17.6 Preview 3 进行了测试。如果您想通过 Visual Studio 系列产品尝试 .NET 8,我们建议您使用预览通道版本。Visual Studio for Mac 对 .NET 8 的支持尚不可用。
让我们来看看一些新功能。
软件开发工具包
SDK 进行了多项改进,并进行了重大更改。有关重大更改的更多信息,请参阅.NET SDK 退出时不再更改编码。
对 .NET SDK 所做的改进如下:
简化的输出路径
.NET 应用程序可以通过多种不同的方式构建,因此,该平台的用户已经熟悉了不同构建工件的一组非常深入且复杂的输出路径。诸如bin
、obj
、之类的文件夹publish
以及这些文件夹的许多不同排列和排列对于许多 .NET 开发人员来说都是肌肉记忆。同样强大的是这些输出的每个项目目录的概念。然而,随着时间的推移,我们从新的和长期的 .NET 用户那里得到了反馈,这种布局是:
- 很难使用,因为布局可以通过相对简单的 MSBuild 更改而发生巨大变化。
- 工具很难预测,因为每个项目的布局使得很难确保您已经获得每个项目的输出。
为了解决这两个挑战并使构建输出更易于使用且更加一致,.NET SDK 引入了一个选项,可以创建更统一、更简化的输出路径结构。
新的输出路径侧重于:
- 将所有构建输出收集在一个公共位置。
- 在此公共位置下按项目分离构建输出。
- 将整体构建输出布局展平至最多三层深度。
要选择新的输出路径布局,您需要在文件UseArtifactsOutput
中设置该属性Directory.Build.props
。最简单的开始方法是dotnet new buildprops
在存储库的根目录中运行,打开生成的Directory.Build.props
文件,然后将以下内容添加到PropertyGroup
该文件中:
<UseArtifactsOutput>true</UseArtifactsOutput>
从此时起,所有项目的构建输出将被放置到.artifacts
存储库根目录中的目录中。这是可配置的 - 只需将文件ArtifactsPath
中的属性设置Directory.Build.props
为您喜欢的任何目录即可。如果您不想用作.artifacts
默认值,我们很乐意听到有关设计讨论的反馈。
目录的布局.artifacts
将采用以下形式<ArtifactsPath>\<Type of Output>\<Project Name>\<Pivots>
:
Type of Output
用于对不同类别的构建输出进行分组,例如二进制文件、中间/生成的文件、已发布的应用程序或 NuGet 包,以及Pivots
用于展平用于区分构建的所有不同选项,例如Configuration
和RuntimeIdentifier
。
在新格式下创建的路径的一些示例是:
.artifacts\bin\debug
– 运行时简单项目的构建输出路径dotnet build
。.artifacts\obj\debug
– 运行时简单项目的中间输出路径dotnet build
。.artifacts\bin\MyApp\debug_net8.0
net8.0
– 用于构建多目标项目的构建输出路径。.artifacts\publish\MyApp\release_linux-x64
– 发布linux-x64
..artifacts\package\release
.nupkg
–将为项目创建版本的文件夹。
我们认为,这种统一的输出结构解决了我们从用户那里听到的担忧,并为我们的未来奠定了基础。和部分使我们能够添加新类型的输出或构建Type of Output
,Pivots
而无需在将来彻底改变布局。将所有输出锚定在一个文件夹中使