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 已知问题

在以下情况下,对于使用 packages.config 的项目,NuGet.exe 6.10.0 和 Visual Studio 17.10.0 可能在 NuGet 操作过程中遭遇失败:

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

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

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

中断性变更

  • 向 NuGet.Configuration 添加可为 null 的批注 - #13250

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

  • 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] no-op restore 不再是 no-op - #13269

  • 减少调用 IVsProjectAdpater.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”时,包的搜索结果应为“totalDownloads”而不是“total downloads”- #13165

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

  • dotnet 包搜索格式除了显示 json 文件外,还显示帮助输出 - #13161

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

  • 在 VersionRange 分析中使用 string.Contains 而不是 IEnumerable.Contains - #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 从元组切换到字典键的 ValueTuple
    • 5552 避免为对 WithExtension 的调用创建捕获类
    • 5556 从 ConcurrentDictionary 切换到带锁的字典,以避免...
    • 5551 使用 string.Contains 而不是 IEnumerable.Contains
    • 5550 避免装箱 List<T> 枚举器
  • GenelleM
    • 5655 为 dgspec 唯一性计算添加 64 位非加密哈希 algo
    • 5629 将 PackageSpecWriter 中对 ICollection 上 Any() 的调用替换为 Count > 0 问题 #13213
    • 5619 减少 SetCentralDependencies 中的一些 CPU 时间使用
  • NikolaMilosavljevic
    • 5673 在 VMR 中启用发布
    • 5625 消除 System.CommandLine 预生成包
  • brianrob
    • 5650 添加还原检测