命令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>