.NET 8 Preview 1 中 SDK 的更新

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.NET 8 Preview 1 中 SDK 的更新相关的知识,希望对你有一定的参考价值。

.NET 8 Preview 1 中 SDK 的更新

Intro

在 .NET 8 中 dotnet publish 和 dotnet pack 的默认行为会发生一些变化,之前 publish 和 pack 默认是 Debug,从 .NET 8 开始默认的配置就变成了 Release

Samples

来看一下实际效果

dotnet pack

dotnet publish

从输出结果可以看出,publish 和 pack 默认都走了 Release 模式

dotnet build 默认还是会走 Debug 的配置,如下:

dotnet build

我们也可以显式的指定不要开启这一功能,我们可以在项目文件里指定 Property 如:

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

或者也可以在跑命令的时候传入 MS Build property /p:PublishRelease=false 或者 /p:PackRelease=false

禁用之后的效果如下,和之前的行为一致,默认使用 Debug 配置

dotnet publish no release

dotnet pack no release

以上都是在默认情况下,如果指定了 Configuration 配置则会使用指定的配置,例如:

dotnet pack with configuration

More

这一特性已经提出了蛮久了,因为大多数情况下我们要发布的话大多会选择 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

References

  • https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-preview-1/#net-sdk

  • https://github.com/dotnet/sdk/issues/23551

  • https://learn.microsoft.com/dotnet/core/compatibility/sdk/8.0/dotnet-publish-config

  • https://learn.microsoft.com/dotnet/core/compatibility/sdk/8.0/dotnet-pack-config

以上是关于.NET 8 Preview 1 中 SDK 的更新的主要内容,如果未能解决你的问题,请参考以下文章

.NET 8 Preview 1 中 SystemTextJson 的改进

dotnet跨平台微软昨天宣布正式发布.NET Core RC2和.NET Core SDK Preview 1,还有Entity Framework Core RC2

.NET 8 Preview 1 中新增的 Random 方法

dotnet 8 preview 1 即将发布

.NET Core Preview

在哪里下载以前版本的 .net core sdk?