「dotnet restore」會稽核可轉移的套件
命令dotnet restore
會還原專案的相依性和工具,現在預設會產生可轉移套件的安全性弱點警告。
先前的行為
在 .NET 8 中, 引進 NuGetAudit 來發出具有已知安全性弱點之套件的警告。 根據預設,只會稽核直接套件參考,不過,可以將 屬性變更 NuGetAuditMode
為包含所有套件。
新的行為
從 .NET 9 開始,如果未明確設定, NuGetAuditMode
預設為 all
。 此設定表示 具有已知弱點的可轉移套件(專案直接參考的套件 相依性),現在會導致回報警告。
如果您的專案將錯誤視為警告,此行為可能會導致還原失敗。
導入的版本
.NET 9 Preview 6
中斷性變更的類型
此變更為行為變更。
變更原因
具有已知弱點的套件可能會導致您的應用程式遭到惡意探索,即使您的專案未直接參考或使用易受攻擊的套件也一樣。 .NET 9 中的新功能也可讓您更輕鬆地調查套件圖表,並隱藏與應用程式如何使用易受攻擊套件無關的諮詢。
建議的動作
若要明確降低因為警告而中斷組建的這項變更機率,您可以考慮使用
<TreatWarningsAsErrors>
和 ,<WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904</WarningsNotAsErrors>
以確保環境中仍允許已知的安全性弱點。使用之類的
dotnet nuget why
工具,尋找導致包含已知弱點之可轉移套件的最上層套件,並嘗試升級它,以查看可轉移的弱點是否消失。 如果沒有,請藉由為其新增PackageReference
,並將它升級至較新版本,將可轉移套件升級至最上層套件。如果您想要隱藏特定的諮詢,您可以將專案新增
<NuGetAuditSuppress Include="url" />
至項目檔,其中url
是 NuGet 警告訊息中報告的 URL。<ItemGroup> <NuGetAuditSuppress Include="url" /> </ItemGroup>
如果您只想要警告具有已知弱點的直接套件參考,您可以在項目檔中將 設定為
<NuGetAuditMode>
direct
。<PropertyGroup> <NuGetAuditMode>direct</NuGetAuditMode> </PropertyGroup>