如何将新的 .NET 8 BCL 弃用警告视为错误?

问题描述 投票:0回答:1

在我们的C#项目中,我们一般使用如下设置:

<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<WarningsNotAsErrors>612,618</WarningsNotAsErrors>

到目前为止,效果完美,达到了以下预期结果:

  • 一般来说,警告被视为错误。因此,开发人员必须立即修复它们。
  • “过时”/“已弃用”警告 CS0612 和 CS0618 是一种特殊情况 - 它们的全部目的是警告 before 代码将在更高版本中中断,从而创建一个阶段,在此阶段开发人员可以在不中断的情况下意识到问题构建。因此,这两个警告被视为警告,而不是错误。

在 .NET 8 中,BCL 似乎引入了一整套新警告,表明某些类型或成员将被弃用,例如:

在我们的代码库(有多个数百个 C# 项目)中,我们经常出现这样的情况。我们会修复它们,但不能同时在所有地方修复。

在不脱离一般警告作为错误设置的情况下,将这些新的弃用警告视为警告而不是错误的有效方法是什么?

(作为一点背景信息,我对为什么决定对 .NET 8 框架弃用声明大量新警告而不是首先使用现有的 CS0612 和 CS0618 的任何见解感兴趣。也许了解这有助于决定如何处理这个问题。)

c# warnings deprecated .net-8.0
1个回答
0
投票

为什么 SYSLIB 警告与 CS0612/CS0618 分开引入?

CS0612 和 CS0618 警告与过时属性特别相关。这些属性直接与已弃用的 API 或类型相关联,通常由开发人员在标记自己的代码库以便将来删除时使用。

另一方面,SYSLIB 警告是 .NET 内部库警告(系统库)的一部分。这些警告:

反映影响框架较大部分的全系统弃用。 帮助开发人员从过时的技术或实践中过渡,这些技术或实践将在未来的 .NET 版本中删除或替换。 SYSLIB 警告特定于基类库 (BCL),旨在传达更广泛的框架级别更改,例如序列化模式、加密策略或基于格式化程序的序列化。

通过使用 SYSLIB 代码,Microsoft 能够针对特定类别的弃用提供更多上下文和清晰度,这与更通用的 CS0612/CS0618 警告不同。

https://learn.microsoft.com/en-us/dotnet/fundamentals/syslib-diagnostics/obsoletions-overview

我相信这篇[帖子]应该对你有帮助,因为你只是做了与他正在做的相反的事情

© www.soinside.com 2019 - 2024. All rights reserved.