.NET 8 PReview 1 中 SDK 的更新Intro

在 .NET 8 中 dotnet publish 和 dotnet pack 的默认行为会发作一些变革,之前 publish 和 pack 默认是 Debug,从 .NET 8 起头默认的设置装备摆设就酿成了 Release

Samples

来看一下现实效果

.NET 8 Preview 1 中 SDK 的更新  第1张

dotnet pack

.NET 8 Preview 1 中 SDK 的更新  第2张

dotnet publish

从输出成果能够看出,publish 和 pack 默认都走了 Release 形式

dotnet build 默认仍是会走 Debug 的设置装备摆设,如下:

.NET 8 Preview 1 中 SDK 的更新  第3张

dotnet build

我们也能够显式的指定不要开启那一功用,我们能够在项目文件里指定 ProPErty 如:

<PropertyGroup><PublishRelease>false</PublishRelease><PackRelease>false</PackRelease></PropertyGroup>

或者也能够在跑号令的时候传入 MS Build property /p:PublishRelease=false 或者 /p:PackRelease=false

禁用之后的效果如下,和之前的行为一致,默认利用 Debug 设置装备摆设

.NET 8 Preview 1 中 SDK 的更新  第4张

dotnet publish no release

.NET 8 Preview 1 中 SDK 的更新  第5张

dotnet pack no release

以上都是在默认情况下,若是指定了 Configuration 设置装备摆设则会利用指定的设置装备摆设,例如:

.NET 8 Preview 1 中 SDK 的更新  第6张

dotnet pack with configurationMore

那一特征已经提出了蛮久了,因为大大都情况下我们要发布的话大多会选择 Release 形式下的,所以其实 pack 和 publish 默认用 Release 形式觉得仍是比力合理的

基于那一特征,我们在打包 nuget 包的时候就能够不消指定 Release 了

同样的在打包 docker 镜像的时候也不需要再显式的指定 Configuration 为 Release 了

- RUN dotnet publish -c Release -o /app/artifacts+ RUN dotnet publish -o /app/artifacts

.NET 7 最新的 SDK 也撑持了那一特征,但是默认没有翻开,需要本身手动设置装备摆设一下 PublishRelease=true 或者 PackRelease=true

Referenceshttps://devblogs.microsoft.com/dotnet/announcing-dotnet-8-preview-1/#net-sdkhttps://github.com/dotnet/sdk/issues/23551https://learn.microsoft.com/dotnet/core/compatibility/sdk/8.0/dotnet-publish-confighttps://learn.microsoft.com/dotnet/core/compatibility/sdk/8.0/dotnet-pack-config