|
| 1 | +--- |
| 2 | +title: NuGet 6.10 Release Notes |
| 3 | +description: Release notes for NuGet 6.10 including new features, bug fixes, and DCRs. |
| 4 | +author: kartheekp-ms |
| 5 | +ms.date: 5/13/2024 |
| 6 | +ms.topic: conceptual |
| 7 | +--- |
| 8 | + |
| 9 | +# NuGet 6.10 Release Notes |
| 10 | + |
| 11 | +NuGet distribution vehicles: |
| 12 | + |
| 13 | +| NuGet version | Available in Visual Studio version | Available in .NET SDK(s) | |
| 14 | +|:---|:---|:---| |
| 15 | +| [**6.10**](https://nuget.org/downloads) | [Visual Studio 2022 version 17.10](https://visualstudio.microsoft.com/downloads/) | [8.0.3xx](https://dotnet.microsoft.com/download/dotnet/8.0)<sup>1</sup> | |
| 16 | + |
| 17 | +<sup>1</sup> Installed with Visual Studio 2022 with any .NET workload |
| 18 | + |
| 19 | +## Summary: What's New in 6.10 |
| 20 | + |
| 21 | +* [Feature]: add dotnet nuget config command - [#12469](https://github.com/NuGet/Home/issues/12469) |
| 22 | + |
| 23 | +* Warn when vulnerabilities are detected during packages.config restore - [#12307](https://github.com/NuGet/Home/issues/12307) |
| 24 | + |
| 25 | +* Display a vulnerability info bar when there's vulnerabilities in packages.config based projects. - [#13271](https://github.com/NuGet/Home/issues/13271) |
| 26 | + |
| 27 | +* [Bug]: VS Credential Provider Incorrectly Setting Value of `isRetry` - [#11210](https://github.com/NuGet/Home/issues/11210) |
| 28 | + |
| 29 | +* dotnet list package --vulnerable requires constant login to 3rd party nuget feed - [#12456](https://github.com/NuGet/Home/issues/12456) |
| 30 | + |
| 31 | +### Breaking changes |
| 32 | + |
| 33 | +* Add nullable annotations to NuGet.Configuration - [#13250](https://github.com/NuGet/Home/issues/13250) |
| 34 | + |
| 35 | +* [Dotnet Package Search] The search result of the package should be “version” instead of “latestVersion” when executing command “dotnet package search \<Package Name\> --exact-match --format json” - [#13158](https://github.com/NuGet/Home/issues/13158) |
| 36 | + |
| 37 | +* ResolvedDependencyKey should be struct to reduce memory allocations - [#13138](https://github.com/NuGet/Home/issues/13138) |
| 38 | + |
| 39 | +* [DCR]: Central Package Management - Respect .props file as a way to opt-in to the feature. - [#11834](https://github.com/NuGet/Home/issues/11834) |
| 40 | + |
| 41 | +### Issues fixed in this release |
| 42 | + |
| 43 | +* Warn when vulnerabilities are detected during packages.config restore in CLI scenarios. - [#13253](https://github.com/NuGet/Home/issues/13253) |
| 44 | + |
| 45 | +* Stop using JObject in assets file reading to reduce allocations. [#12715](https://github.com/NuGet/Home/issues/12715) |
| 46 | + |
| 47 | +* Add event tracing to restore to make it possible to measure performance - [#13274](https://github.com/NuGet/Home/issues/13274) |
| 48 | + |
| 49 | +* Read auditSources from nuget.config files - [#13211](https://github.com/NuGet/Home/issues/13211) |
| 50 | + |
| 51 | +* SourceRepository.GetResourceAsync should be cancellable. - [#13234](https://github.com/NuGet/Home/issues/13234) |
| 52 | + |
| 53 | +* CreateWalkAsync should not be recursive - [#13222](https://github.com/NuGet/Home/issues/13222) |
| 54 | + |
| 55 | +* ProjectModel.HashObjectWriter.OnFlush is using a SHA512 hash versus a cheaper hash which seems like overkill - [#13214](https://github.com/NuGet/Home/issues/13214) |
| 56 | + |
| 57 | +* Owner package metadata is an array in JSON but a string in Protocol types - [#13186](https://github.com/NuGet/Home/issues/13186) |
| 58 | + |
| 59 | +* dotnet package search --verbosity detailed output table too wide - [#13162](https://github.com/NuGet/Home/issues/13162) |
| 60 | + |
| 61 | +* Calls in SetWarningProperties() have allocation overhead due to multiple enumeration - [#13151](https://github.com/NuGet/Home/issues/13151) |
| 62 | + |
| 63 | +* Use of ConcurrentStack in object pool implementation creates large amounts of allocations - [#13147](https://github.com/NuGet/Home/issues/13147) |
| 64 | + |
| 65 | +* IsBestVersion boxes HashSet\<T\> enumerators resulting in lots of allocation overhead during restore. - [#13146](https://github.com/NuGet/Home/issues/13146) |
| 66 | + |
| 67 | +* Deprecate NuGet.exe list in favor of NuGet.exe search - [#7912](https://github.com/NuGet/Home/issues/7912) |
| 68 | + |
| 69 | +* [Dotnet Package Search] An unhandled exception is thrown when searching with “--verbosity detailed” and “--format json” - [#13300](https://github.com/NuGet/Home/issues/13300) |
| 70 | + |
| 71 | +* `dotnet package search` crashes on .NET 9 preview 2 nightly - [#13286](https://github.com/NuGet/Home/issues/13286) |
| 72 | + |
| 73 | +* Use the StringBuilderPool rather than allocating a new StringBuilder - [#13285](https://github.com/NuGet/Home/issues/13285) |
| 74 | + |
| 75 | +* Pass in an appropriate size for List\<T\> - [#13284](https://github.com/NuGet/Home/issues/13284) |
| 76 | + |
| 77 | +* JsonTextWriter allocates a large number strings - [#13283](https://github.com/NuGet/Home/issues/13283) |
| 78 | + |
| 79 | +* Usage of StringBuilder.Append() allocates when appending an int - [#13282](https://github.com/NuGet/Home/issues/13282) |
| 80 | + |
| 81 | +* Unnecessary boxing of struct enumerators - [#13281](https://github.com/NuGet/Home/issues/13281) |
| 82 | + |
| 83 | +* Process objects should be disposed so that the finalizer doesn't run - [#13280](https://github.com/NuGet/Home/issues/13280) |
| 84 | + |
| 85 | +* Avoid boxing enumerators for collections - [#13279](https://github.com/NuGet/Home/issues/13279) |
| 86 | + |
| 87 | +* [.NET 9 Preview 3] no-op restore is no longer a no-op - [#13269](https://github.com/NuGet/Home/issues/13269) |
| 88 | + |
| 89 | +* Reduce allocations in calling IVsProjectAdpater.IsCapabilityMatchAsync - [#13268](https://github.com/NuGet/Home/issues/13268) |
| 90 | + |
| 91 | +* Consolidate packages.config restore implementations by minimizing discrepancies - [#13233](https://github.com/NuGet/Home/issues/13233) |
| 92 | + |
| 93 | +* Unroll LINQ usage to trim some allocations in AddMSBuildAssets - [#13223](https://github.com/NuGet/Home/issues/13223) |
| 94 | + |
| 95 | +* PackageSpecWriter is calling Any on an ICollection\<T\>/IList\<T\> instances instead of .Count - [#13213](https://github.com/NuGet/Home/issues/13213) |
| 96 | + |
| 97 | +* StringBuilder.Append(int) causes unnecessary allocations - [#13207](https://github.com/NuGet/Home/issues/13207) |
| 98 | + |
| 99 | +* Caching task results can cause all continuations to occur on the same thread - [#13206](https://github.com/NuGet/Home/issues/13206) |
| 100 | + |
| 101 | +* LibraryDependency creates a collection that is mostly empty - [#13184](https://github.com/NuGet/Home/issues/13184) |
| 102 | + |
| 103 | +* PackageSpecWriter should write out original string for versions instead of allocating a new one - [#13183](https://github.com/NuGet/Home/issues/13183) |
| 104 | + |
| 105 | +* SetCentralDependencies is calling OrderBy without specifying comparison defaulting to cultural-sensitive compare - [#13182](https://github.com/NuGet/Home/issues/13182) |
| 106 | + |
| 107 | +* Search results in json format from dotnet package search should not include fields for which no values are provided - [#13166](https://github.com/NuGet/Home/issues/13166) |
| 108 | + |
| 109 | +* The search result of the package should be “totalDownloads” instead of “total downloads” when executing command “dotnet package search \<Package Name\> --format json” - [#13165](https://github.com/NuGet/Home/issues/13165) |
| 110 | + |
| 111 | +* [dotnet package search] the failure to load a serivce index should be an error and not a warning. - [#13163](https://github.com/NuGet/Home/issues/13163) |
| 112 | + |
| 113 | +* dotnet package search format shows help output in addition to a json file - [#13161](https://github.com/NuGet/Home/issues/13161) |
| 114 | + |
| 115 | +* Cancelling static graph-based restore does not end the restore process - [#13140](https://github.com/NuGet/Home/issues/13140) |
| 116 | + |
| 117 | +* Use string.Contains instead of IEnumerable.Contains in VersionRange parsing - [#13124](https://github.com/NuGet/Home/issues/13124) |
| 118 | + |
| 119 | +* Static graph restore doesn't restore packages.config only solution - [#13109](https://github.com/NuGet/Home/issues/13109) |
| 120 | + |
| 121 | +* NuGet restore always touched the project.assets.json file even no content is changed when it needs log error messages. - [#13098](https://github.com/NuGet/Home/issues/13098) |
| 122 | + |
| 123 | +* Audit at restore time must not throw and fail the operation - [#13085](https://github.com/NuGet/Home/issues/13085) |
| 124 | + |
| 125 | +* Getting "An item with the same key has already been added" error when restoring. - [#13067](https://github.com/NuGet/Home/issues/13067) |
| 126 | + |
| 127 | +* PM UI Scrolling no longer loads additional packages. - [#13063](https://github.com/NuGet/Home/issues/13063) |
| 128 | + |
| 129 | +* NuGet restore cache check is no longer using file existence cache - [#13058](https://github.com/NuGet/Home/issues/13058) |
| 130 | + |
| 131 | +* Adding a reference to an esproj from an ASP.Net project results in a NU1105 error - [#12986](https://github.com/NuGet/Home/issues/12986) |
| 132 | + |
| 133 | +* RemoteDependencyWalker allocates a lot due to the fact that it's called recursively - [#12748](https://github.com/NuGet/Home/issues/12748) |
| 134 | + |
| 135 | +* [Bug]: Canceling msbuild restore is slow when invalid/unreachable source configured - [#11813](https://github.com/NuGet/Home/issues/11813) |
| 136 | + |
| 137 | +* Restore: excessive deep cloning of ProjectSpec - [#9041](https://github.com/NuGet/Home/issues/9041) |
| 138 | + |
| 139 | +[List of commits in this release](https://github.com/NuGet/NuGet.Client/compare/6.9.1.3...6.10.0.97) |
| 140 | + |
| 141 | +### Community contributions |
| 142 | + |
| 143 | +Thank you to all the contributors who helped make this NuGet release awesome! |
| 144 | + |
| 145 | +* [Erarndt](https://github.com/NuGet/NuGet.Client/pull/5659) |
| 146 | + * [5659](https://github.com/NuGet/NuGet.Client/pull/5659) Reduce boxing when enumerating lists |
| 147 | + * [5662](https://github.com/NuGet/NuGet.Client/pull/5662) Use StringBuilder.AppendInt() in more places to reduce allocations when appending integers to a StringBuilder |
| 148 | + * [5663](https://github.com/NuGet/NuGet.Client/pull/5663) Remove allocations from TextWriter.NewLine implementation |
| 149 | + * [5665](https://github.com/NuGet/NuGet.Client/pull/5665) Use pooled StringBuilder |
| 150 | + * [5661](https://github.com/NuGet/NuGet.Client/pull/5661) Avoid enumerator boxing in PackageSpecificWarningProperties.AddRangeOfCodes and TransitiveNoWarnUtils.AddToSeen |
| 151 | + * [5660](https://github.com/NuGet/NuGet.Client/pull/5660) Ensure that Process objects are disposed when launching authentication plug-ins |
| 152 | + * [5664](https://github.com/NuGet/NuGet.Client/pull/5664) Specify list size in TopologicalSortUtility.CalculateRelationships |
| 153 | + * [5624](https://github.com/NuGet/NuGet.Client/pull/5624) Switch CreateNodeAsync to an iterative approach |
| 154 | + * [5584](https://github.com/NuGet/NuGet.Client/pull/5584) Unroll LINQ usage to trim some allocations in AddMSBuildAssets |
| 155 | + * [5574](https://github.com/NuGet/NuGet.Client/pull/5574) Unroll several LINQ calls |
| 156 | + * [5593](https://github.com/NuGet/NuGet.Client/pull/5593) Further reduce allocations in CreateGraphNodeAsync |
| 157 | + * [5592](https://github.com/NuGet/NuGet.Client/pull/5592) Avoid multiple enumeration when writing Json objects |
| 158 | + * [5600](https://github.com/NuGet/NuGet.Client/pull/5600) Avoid intermediate string allocation caused by StringBuilder Append(i… |
| 159 | + * [5555](https://github.com/NuGet/NuGet.Client/pull/5555) Unroll Linq in GetFlags |
| 160 | + * [5588](https://github.com/NuGet/NuGet.Client/pull/5588) Avoid boxing HashSet Enumerator in IsBestVerion |
| 161 | + * [5589](https://github.com/NuGet/NuGet.Client/pull/5589) Update the pool implementation to use a stack with a lock to avoid al… |
| 162 | + * [5568](https://github.com/NuGet/NuGet.Client/pull/5568) Change ResolvedDependencyKey to a struct |
| 163 | + * [5553](https://github.com/NuGet/NuGet.Client/pull/5553) Avoid some allocations in GetCompatibilityData |
| 164 | + * [5554](https://github.com/NuGet/NuGet.Client/pull/5554) Switch from Tuple to ValueTuple for Dictionary keys |
| 165 | + * [5552](https://github.com/NuGet/NuGet.Client/pull/5552) Avoid creating the capture class for calls to WithExtension |
| 166 | + * [5556](https://github.com/NuGet/NuGet.Client/pull/5556) Switch from ConcurrentDictionary to Dictionary with lock to avoid rep… |
| 167 | + * [5551](https://github.com/NuGet/NuGet.Client/pull/5551) Use string.Contains instead of IEnumerable.Contains |
| 168 | + * [5550](https://github.com/NuGet/NuGet.Client/pull/5550) Avoid boxing List\<T\> enumerator |
| 169 | +* [GenelleM](https://github.com/NuGet/NuGet.Client/pull/5655) |
| 170 | + * [5655](https://github.com/NuGet/NuGet.Client/pull/5655) Add 64-bit non crypto hash algo for dgspec uniqueness computation |
| 171 | + * [5629](https://github.com/NuGet/NuGet.Client/pull/5629) Replace calls to Any() on ICollection in PackageSpecWriter with Count > 0 Issue #13213 |
| 172 | + * [5619](https://github.com/NuGet/NuGet.Client/pull/5619) Reduces some CPU time usage in SetCentralDependencies |
| 173 | +* [NikolaMilosavljevic](https://github.com/NuGet/NuGet.Client/pull/5673) |
| 174 | + * [5673](https://github.com/NuGet/NuGet.Client/pull/5673) Enable publishing in VMR |
| 175 | + * [5625](https://github.com/NuGet/NuGet.Client/pull/5625) Eliminate System.CommandLine prebuilt package |
| 176 | +* [brianrob](https://github.com/NuGet/NuGet.Client/pull/5650) |
| 177 | + * [5650](https://github.com/NuGet/NuGet.Client/pull/5650) Add Restore Instrumentation |
0 commit comments