此警告指示用于生成项目的.NET SDK 已终止(EOL),并且不再接收安全更新。 完整的警告消息类似于以下示例:
NETSDK1239:截至 <date>,当前.NET SDK(<version>)生命周期结束。 它不会收到进一步的安全更新: https://dotnet.microsoft.com/download
若要解决该警告,请从 https://dotnet.microsoft.com/download 安装受支持的 .NET SDK,并更新 global.json(如果存在),以选择新版本。 有关当前支持时间线,请参阅 .NET 版本和支持。
此警告不同于 NETSDK1138,当项目 的目标框架 不受支持时,会引发此警告。 当 运行该构建的 SDK 已停止支持时,无论目标是哪个框架,都会引发 NETSDK1239。
检查的工作原理
此检查为选择启用,且仅在 MSBuild 属性 CheckSdkVulnerabilities 设置为 true 时运行:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<CheckSdkVulnerabilities>true</CheckSdkVulnerabilities>
</PropertyGroup>
</Project>
还可以将 /p:CheckSdkVulnerabilities=true 传递给 .NET CLI 命令,例如 dotnet build。
默认情况下,.NET CLI 在 ~/.dotnet/sdk-vulnerability-cache/ 下每隔 24 小时最多刷新一次后台 SDK 发布元数据的本地缓存。 设置 DOTNET_SDK_VULNERABILITY_CHECK_INTERVAL_HOURS 以更改刷新间隔。 MSBuild 检查仅读取该缓存;它在生成期间不进行网络调用。
禁止显示警告
若要在不更新 SDK 的情况下取消警告,请执行以下操作:
将
NETSDK1239添加到NoWarn:<NoWarn>$(NoWarn);NETSDK1239</NoWarn>设置为
CheckSdkVulnerabilitiesfalse(默认值)以关闭NETSDK1238、NETSDK1239和NETSDK1240。将
DOTNET_SDK_VULNERABILITY_CHECK_DISABLE环境变量设置为true.