此警告指示用于生成项目的.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禁用缓存刷新和生成时检查。