共用方式為


「dotnet restore」會稽核可轉移的套件

命令dotnet restore會還原專案的相依性,現在在專案以 .NET 10 或更新版本為目標時,預設會產生可轉移套件的安全性弱點警告。

先前的行為

NuGetAudit 是在 .NET 8 中引進,針對具有已知安全性弱點的套件發出警告。 預設情況下,只會稽核直接的套件參考,不過,可以改變 NuGetAuditMode 屬性以包含所有套件。

在 .NET 9 Preview 6 中,NuGetAuditMode 的預設值已針對所有專案變更為 all,然而在 .NET 9.0.101 SDK 中,此變更又被還原回 direct

新行為

當專案以 .NET 10 或更新版本為目標時, NuGetAuditMode 如果尚未明確設定,則預設為 all 。 此設定表示,專案中直接參考的套件的遞迴套件(相依性)具有已知弱點時,現在會導致回報警告。 如果您的專案將警告視為錯誤,此行為可能會導致還原失敗。

如果您的項目以 .NET 9 或更低為目標,則 預設 NuGetAuditMode 值會 direct維持為 。

推出的版本

.NET 10 Preview 3

破壞性變更的類型

這項變更是 的行為變更。

變更的原因

具有已知弱點的套件可能會導致您的應用程式遭到惡意探索,即使您的專案未直接參考或直接使用易受攻擊的套件也一樣。

  • 若要避免將稽核警告視為錯誤,即使使用 <TreatWarningsAsErrors>,您也可以使用 <WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904;$(WarningsNotAsErrors)</WarningsNotAsErrors>

  • 使用之類的 dotnet nuget why 工具,尋找導致包含已知弱點之可轉移套件的最上層套件,並嘗試升級它,以查看可轉移的弱點是否消失。 如果沒有,請將可轉移套件提升為最上層套件,藉由為其新增 PackageReference,並將它升級至較新版本。

  • 如果您想要抑制特定的警告,您可以在項目檔中新增 <NuGetAuditSuppress Include="url" /> 項目,其中 url 是 NuGet 警告訊息中報告的 URL。

    <ItemGroup>
        <NuGetAuditSuppress Include="url" />
    </ItemGroup>
    
  • 如果您只想要警告具有已知弱點的直接套件參考,您可以在項目檔中將 設定為 <NuGetAuditMode>direct

    <PropertyGroup>
      <NuGetAuditMode>direct</NuGetAuditMode>
    </PropertyGroup>
    

另請參閱