dotnet restore
命令 (还原项目的依赖项和工具) 现在默认生成安全漏洞警告。
旧行为
以前,dotnet restore
默认情况下不会发出任何安全漏洞警告。
新行为
如果使用 .NET 8 SDK 或更高版本进行开发,则默认情况下,dotnet restore
会为所有还原的项目生成安全漏洞警告。 加载解决方案或项目,或者运行 CI/CD 脚本时,如果已启用 <TreatWarningsAsErrors>
,则此更改可能会中断工作流。
引入的版本
.NET 8 预览版 4
中断性变更的类型
此更改为行为更改。
更改原因
许多用户想知道他们还原的包是否包含任何已知的安全漏洞。 此功能是一项非常受欢迎的功能。 安全问题每年都在增加,而一些已知的安全问题还不够明显,无法立即采取修复措施。
建议的操作
可以在项目文件(例如 *.csproj 或 *.fsproj 文件)或 Directory.Build.props 文件中设置建议作中提到的属性。
为了明确降低因警告而导致构建失败的可能性,可以考虑使用
<TreatWarningsAsErrors>
,并设置<WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904</WarningsNotAsErrors>
,以确保已知的安全漏洞仍然允许在环境中存在。<PropertyGroup> ... <TreatWarningsAsErrors>true</TreatWarningsAsErrors> <WarningsNotAsErrors>NU1901;NU1902;NU1903;NU1904</WarningsNotAsErrors> </PropertyGroup>
如果要设置不同的安全审核级别,请将属性“
<NuGetAuditLevel>
”添加到项目文件中,其可能值为low
、moderate
、high
和critical
。<PropertyGroup> ... <NuGetAuditLevel>low</NuGetAuditLevel> </PropertyGroup>
如果要忽略这些警告,可以使用
<NoWarn>
来禁止显示NU1901-NU1904
警告。<PropertyGroup> ... <NoWarn>$(NoWarn);NU1901-NU1904</NoWarn> </PropertyGroup>
若要完全禁用新行为,可以将项目属性“
<NuGetAudit>
”设置为false
。<PropertyGroup> ... <NuGetAudit>false</NuGetAudit> </PropertyGroup>