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

此警告表示用於建置專案的 .NET SDK 存在一個或多個已知的常見漏洞與暴露(CVE)。 完整的警告訊息與以下範例相似:

NETSDK1238:目前的 .NET SDK(<version>)存在已知漏洞(<CVE 清單>)。 更新至版本<version>。 請參閱 https://dotnet.microsoft.com/download

要解決警告,請安裝已修補的 .NET SDK 從 https://dotnet.microsoft.com/download,並更新你的 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 最多每 24 小時在背景刷新一次 SDK 發布元資料的本地快取,且頻率為 ~/.dotnet/sdk-vulnerability-cache/。 要改變該區間,設 DOTNET_SDK_VULNERABILITY_CHECK_INTERVAL_HOURS。 MSBuild 檢查只讀取該快取;在建置過程中不會進行網路呼叫。 對於從未有網路存取權的機器,則不會發出任何警告。

隱藏警告

要在不更新 SDK 的情況下抑制警告:

  • NETSDK1238新增至NoWarn

    <NoWarn>$(NoWarn);NETSDK1238</NoWarn>
    
  • 設定 CheckSdkVulnerabilitiesfalse (預設)以關閉NETSDK1238、NETSDK1239和NETSDK1240。

  • 將環境變數 DOTNET_SDK_VULNERABILITY_CHECK_DISABLE 設為 true,即可同時停用快取重新整理和建置時檢查。

參見