NuGet 6.8 发布,增强安全功能

NuGet 6.8 发布与主要更新

随着 .NET 8.0 的发布,NuGet 6.8 也正式推出,并已集成到 Visual Studio 2022 中。此次更新带来了多项重要改进,包括 NuGetAudit 包漏洞通知、HTTPS Everywhere 警告的退出选项、通过 Package Manager UI 在安装/更新时进行包源映射、改进的 Visual Studio 条件包更新支持,以及在 nuget source add 命令中新增的 ProtocolVersion 参数。

新功能与改进

  1. NuGetAudit
    NuGetAudit 提供了 PackageReference 包中已知漏洞的通知功能。开发者可以根据严重性阈值配置警告,报告直接和传递包中的漏洞,从而增强项目的安全意识。在 Visual Studio 中,审计信息显示在错误列表窗口和 SDK 风格项目的项目依赖项中,还原后解决方案资源管理器会显示警告栏,提醒用户项目中使用了存在已知漏洞的包。即使仅配置了直接包的审计,Package Manager UI 也会在“已安装”标签页中警告已知漏洞的传递包。
  2. HTTPS Everywhere 警告退出选项
    NuGet 6.8 解决了 6.3 版本中关于非 HTTPS 源的安全问题。通过在 nuget.config 文件中引入 allowInsecureConnections 属性,开发者可以选择退出 HTTPS Everywhere 警告,根据个人安全风险接受程度提供灵活性。默认情况下,allowInsecureConnections 设置为 false
  3. 包源映射扩展
    在 .NET 6 中引入的包源映射功能,允许精确控制解决方案中的包源。NuGet 6.8 扩展了这一功能,支持在通过 Visual Studio 的 NuGet UI 安装/更新包时自动创建包源映射。工具现在会考虑全局包文件夹中的传递依赖项,如果源已为解决方案启用,则自动映射;如果未启用,则会失败并报错。
  4. 条件包更新
    Visual Studio 现在实现了条件包更新功能。针对多个框架的项目(如 MAUI 或 Uno 项目)中条件安装的包,将通过 Package Manager UI 或 Package Manager Console 正确更新。此前,更新条件包通常会触发 NU1504 警告,尝试将包安装到所有框架。NuGet 6.8 的更新会识别何时包是条件安装的,并仅在已安装的框架中更新它。
  5. ProtocolVersion 参数
    响应开发者和社区的需求,NuGet 6.8 在命令行界面(CLI)的 nuget source add 命令中引入了 ProtocolVersion 参数。开发者现在可以在添加新包源时指定 protocolVersion 属性,从而更好地控制源配置过程。

重大变更

NuGet SDK 的此次发布包含一些重大变更,但使用 NuGet 工具(如 Visual Studio 或 .NET SDK)的用户不受影响。具体变更包括:

  • NuGetOperationType 已从 NuGet.PackageManagement 中移除,建议用户改用 NuGetProjectActionType。
  • PackageVulnerabilityInfo 的严重性从整数类型更改为枚举类型。
  • NuGet.Common 中添加了可空注解。
  • 不可变类型的 Clone 方法已被弃用。

下载与更多信息

除了 Visual Studio 2022 的独立可执行文件外,针对 Windows、macOS 和 Linux 的 NuGet 6.8 现已可供下载。开发者可以查看完整发布说明以获取更多详细信息,包括此版本中修复的问题。

阅读 36
0 条评论