NuGet 6.10 发行说明

NuGet 分发车辆:

NuGet 版本 在 Visual Studio 版本中可用 在 .NET SDK 中可用
6.10.2 Visual Studio 2022 版本 17.10 8.0.3xx1

1 随任何 .NET 工作负载一起安装 Visual Studio 2022

摘要:6.10.2 中的新增功能

此版本中已修复的问题

  • 在 Directory.Packages.props 存在时隐式还原启用中央包管理 - #11834

此版本中的提交列表

1 随任何 .NET 工作负载一起安装 Visual Studio 2022

摘要:6.10.1 中的新增功能

此版本中已修复的问题

  • 当解决方案中的多个 packages.config 项目共享同名(已添加具有相同键的项)时,Visual Studio 和 PMC 还原/更新失败 - #13465

  • ##[error]nuget 命令失败,出现退出代码(1)和错误(已添加具有相同键的项)。 - #13456

此版本中的提交列表

摘要:6.10 中的新增功能

  • [功能]: 添加 dotnet nuget config 命令 - #12469

  • 在 packages.config 还原期间检测到漏洞时发出警告 - #12307

  • 在基于 packages.config 的项目中存在漏洞时,显示漏洞信息栏。 - #13271

  • [Bug]: VS 凭据提供程序错误地设置值 isRetry - #11210

  • dotnet list package --vulnerable 需要持续登录到第三方 nuget 源 - #12456

6.10.0 已知问题

NuGet.exe 6.10.0 和 Visual Studio 17.10.0 在进行 NuGet 操作时,使用 packages.config 的项目在以下情况下可能会遇到故障:

  • 解决方案中的两个或多个项目具有相同的名称
  • 解决方案中的两个或多个项目使用相同的 packages.config 文件(同一目录中存在项目文件)

NuGet.exe 6.10.1 和 Visual Studio 17.10.2 中修复了这些问题。

可在以下位置找到公共跟踪问题和讨论:

重大变化

  • 将可空性注解添加到 NuGet.Configuration - #13250

  • [Dotnet 包搜索]执行命令“dotnet package search <Package Name> --exact-match --format json” - #13158 时,包的搜索结果应为“version”而不是“latestVersion”

  • ResolvedDependencyKey 应是结构体以减少内存分配 - #13138

  • [DCR]:中央包管理 - 尊重 .props 文件作为选择加入功能的方法。 - #11834

  • 删除 NuGet.Packaging.Core - #12495

此版本中已修复的问题

  • 在 CLI 方案中 packages.config 还原期间检测到漏洞时发出警告。 - #13253

  • 停止在资产文件读取中使用 JObject 以减少分配。 #12715

  • 添加事件跟踪以还原,以便测量性能 - #13274

  • 从 nuget.config 文件读取 auditSources - #13211

  • SourceRepository.GetResourceAsync 应可取消。 - #13234

  • CreateWalkAsync 不应递归 - #13222

  • ProjectModel.HashObjectWriter.OnFlush 使用的是 SHA512 哈希,而不是资源消耗更低的哈希,似乎有些过度 - #13214

  • 在 JSON 中,所有者包的元数据是数组;在协议类型中,它是字符串 - #13186

  • dotnet package search --verbosity 详细输出表过宽 - #13162

  • SetWarningProperties() 中的调用由于多个枚举而产生分配开销 - #13151

  • 在对象池实现中使用 ConcurrentStack 可创建大量分配 - #13147

  • IsBestVersion 将 HashSet<T> 枚举器装箱,导致在还原期间产生大量的分配开销。 - #13146

  • 弃用 NuGet.exe 列表,以支持 NuGet.exe 搜索 - #7912

  • [Dotnet 包搜索] 使用 “--verbosity detailed”和 “--format json”进行搜索时,会出现未处理的异常 - #13300

  • dotnet package search 晚上在 .NET 9 预览版 2 上崩溃 - #13286

  • 使用 StringBuilderPool,而不是分配新的 StringBuilder - #13285

  • 传递适当的大小给列表<T> - #13284

  • JsonTextWriter 分配大量字符串 - #13283

  • StringBuilder.Append() 在追加 int 时分配的用法 - #13282

  • 结构枚举器的无必要装箱 - #13281

  • 应该释放进程对象,以避免终结器运行 - #13280

  • 避免对集合使用装箱枚举器 - #13279

  • [.NET 9 预览版 3] 无效果还原已经不再无效果 - #13269

  • 减少调用 IVsProjectAdapter.IsCapabilityMatchAsync 时的内存分配 - #13268

  • 通过最大程度地减少差异来整合 packages.config 还原实现 - #13233

  • 解除 LINQ 用法以减少 AddMSBuildAssets 中的某些内存分配 - #13223

  • PackageSpecWriter 在 ICollection<T>/IList<T> 实例上调用 Any,而不是调用 .Count - #13213

  • StringBuilder.Append(int) 导致不必要的分配 - #13207

  • 缓存任务结果可能导致所有后续操作在同一线程上发生 - #13206

  • LibraryDependency 创建主要为空的集合 - #13184

  • PackageSpecWriter 应为版本写出原始字符串,而不是分配新字符串 - #13183

  • SetCentralDependencies 调用 OrderBy 时未指定比较方式,默认使用区分文化的比较 - #13182

  • 来自 dotnet 包搜索的 json 格式的搜索结果不应包含未提供任何值的字段 - #13166

  • 当执行命令“dotnet package search <Package Name> --format json” - #13165时,包的搜索结果应为“totalDownloads”而不是“total downloads”

  • [dotnet 包搜索] 加载 serivce 索引失败应为错误,而不是警告。 - #13163

  • dotnet 包搜索命令的输出格式除 json 文件外还显示帮助信息 - #13161

  • 取消基于图形的静态还原不会结束还原过程 - #13140

  • 使用字符串.Contains 而不是 IEnumerable.Contains 在 VersionRange 解析中 - #13124

  • 静态图形还原不会仅还原 packages.config 解决方案 - #13109

  • NuGet 还原在需要记录错误消息时总是触碰 project.assets.json 文件,即使没有内容发生改变。 - #13098

  • 还原时审计不得引发异常和导致操作失败 - #13085

  • 还原时出现“存在相同键的项已被添加”的错误。 - #13067

  • PM UI 滚动不再加载其他包。 - #13063

  • NuGet 还原缓存检查不再使用文件存在缓存 - #13058

  • 从 ASP.Net 项目添加对 esproj 的引用会导致 NU1105 错误 - #12986

  • RemoteDependencyWalker 由于递归调用这一事实而分配了大量资源 - #12748

  • [Bug]: 配置无效/无法访问源时取消 msbuild 还原速度缓慢 - #11813

  • 还原:ProjectSpec 的过度深度克隆 - #9041

此版本中的提交列表

社区贡献

感谢所有帮助使此 NuGet 发布令人敬畏的参与者!

  • Erarndt
    • 5659 枚举列表时减少装箱
    • 5662 在更多场景中使用 StringBuilder.AppendInt,以减少将整数追加到 StringBuilder 的过程中产生的分配
    • 5663 从 TextWriter.NewLine 实现中删除内存分配
    • 5665 使用共用 StringBuilder
    • 5661 避免 PackageSpecificWarningProperties.AddRangeOfCodes 和 TransitiveNoWarnUtils.AddToSeen 中的枚举器装箱
    • 5660 确保在启动身份验证插件时释放进程对象
    • 5664 在 TopologicalSortUtility.CalculateRelationships 中指定列表大小
    • 5624 将 CreateNodeAsync 切换到迭代方法
    • 5584 展开 LINQ 用法以减少 AddMSBuildAssets 中的某些分配
    • 5574 展开多个 LINQ 调用
    • 5593 进一步减少 CreateGraphNodeAsync 中的分配
    • 5592 在写入 Json 对象时避免多个枚举
    • 5600 避免由于 StringBuilder Append 导致的中间字符串分配(包括 i...)
    • 5555 在 GetFlags 中解除 LINQ 方法的使用
    • 5588 避免在 IsBestVerion 中装箱 HashSet 枚举器
    • 5589 更新池实现以使用具有锁的堆栈以避免...
    • 5568 将 ResolvedDependencyKey 更改为结构
    • 5553 避免 GetCompatibilityData 中的某些分配
    • 5554 将 Dictionary 键从 Tuple 切换为 ValueTuple
    • 5552 避免为调用 WithExtension 创建捕获类
    • 5556 从 ConcurrentDictionary 切换到带有锁的 Dictionary,以避免重复...
    • 5551 使用 string.Contains 而不是 IEnumerable.Contains
    • 5550 避免将 List<T> 枚举器装箱
  • GenelleM
    • 5655 为 dgspec 唯一性计算添加 64 位非加密哈希算法
    • 5629 将 PackageSpecWriter 中 ICollection 上 Any() 的调用替换为 Count > 0 条件 问题 #13213
    • 5619 减少 SetCentralDependencies 中的一些 CPU 时间使用率
  • 尼古拉·米尔索夫列维奇
    • 5673 在 VMR 中启用发布
    • 5625 消除 System.CommandLine 预生成包
  • brianrob
    • 5650 添加还原工具