NETSDK1238:当前.NET SDK 存在已知漏洞

此警告指示用于生成项目的.NET SDK 具有一个或多个已知的常见漏洞和暴露(CVE)。 完整的警告消息类似于以下示例:

NETSDK1238:当前.NET SDK(<version>) 具有已知漏洞(<CVE list>)。 更新到 <version> 版本。 请参见https://dotnet.microsoft.com/download

若要解决该警告,请从 https://dotnet.microsoft.com/download 安装修补的 .NET SDK,并更新 global.json(如果存在),以选择新版本。

检查的工作原理

此检查为可选启用,仅在 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 的情况下取消警告,请执行以下操作:

  • NETSDK1238添加到NoWarn

    <NoWarn>$(NoWarn);NETSDK1238</NoWarn>
    
  • 设置为 CheckSdkVulnerabilitiesfalse (默认值)以关闭NETSDK1238、NETSDK1239和NETSDK1240。

  • DOTNET_SDK_VULNERABILITY_CHECK_DISABLE 环境变量设置为 true 禁用缓存刷新和生成时检查。

另见