共用方式為


NuGet 警告 NU1901、NU1902、NU1903、NU1904

警告 NU1902:套件 'NuGet.Protocol' 5.11.2 具有已知的中度嚴重性弱點, https://github.com/advisories/GHSA-g3q9-xf95-8hp5

警告碼會根據已知的弱點嚴重性層級而變更:

警告碼 嚴重性
NU1901 愛荷華州
NU1902 溫和
NU1903
NU1904 critical

問題

為專案還原的套件有已知的弱點。

如需詳細資訊,請參閱 稽核套件的檔。

解決方案

當您的專案使用具有已知弱點的套件,以及可協助的工具時,我們有更多 關於建議動作的討論部落格文章

升級至較新版本的套件可能會解決警告。 如果您的專案未直接參考套件(它是可轉移的套件), dotnet nuget why 則可以用來瞭解導致套件包含在專案中的封裝。 您可以檢查弱點諮詢所提供的 URL,以查看已修正的套件版本,或檢查您設定的套件來源,以查看可用的套件版本。 Visual Studio 的套件管理員 UI 可以顯示哪些套件版本受到影響,哪些版本沒有已知的弱點。

如果這些警告造成還原失敗,因為您使用 TreatWarningsAsErrors,您可以新增 <WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904</WarningsNotAsErrors> 以允許這些程式代碼維持為警告。

如果您不想收到比您熟悉層級更嚴重之弱點的通知,您可以編輯項目檔,並新增 MSBuild 屬性 NuGetAuditLevel,並將值設定為 lowmoderatehighcritical。 例如: <NuGetAuditLevel>high</NuGetAuditLevel>

如果您想要隱藏特定諮詢,請新增 MSBuild NuGetAuditSuppress 專案。 例如 <NuGetAuditSuppress Include="https://github.com/advisories/GHSA-g3q9-xf95-8hp5" />NuGetAuditSuppress可從 VS 17.11 和 .NET 8.0.400 SDK 取得,適用於使用 PackageReference的專案,以及使用 packages.config的 VS 17.12

如果您不想讓 NuGet 在還原期間檢查是否有已知弱點的套件,請在專案檔Directory.Build.props或檔案<PropertyGroup>新增 <NuGetAudit>false</NuGetAudit> 。 如果您想要在開發人員計算機上執行 NuGet 稽核,但在 CI 管線上將其停用,您可以利用 MSBuild 匯入環境變數,並在管線定義中建立設定為 false 的 NuGetAudit 環境變數。

在 NuGet 6.12 (Visual Studio/MSBuild 17.12 和 .NET 9.0.100 SDK)中,NuGet 已將 的預設值 NuGetAuditMode 變更為 all,這表示回報具有已知弱點的可轉移套件。 此值可以明確設定為 direct ,以還原回 .NET 8 的預設值。 或者, 屬性 SdkAnalysisLevel 可以設定為 8.0.400 ,暫時停用新版 SDK 中引入的所有新警告和錯誤。 具體而言,在此情況下,預設值 NuGetAuditMode 會變更回 direct