Skip to content

deps: Bump the nuget-group group with 5 updates#21

Merged
tormaroe merged 1 commit into
mainfrom
dependabot/nuget/src/nuget-group-b9b8bf7955
May 26, 2026
Merged

deps: Bump the nuget-group group with 5 updates#21
tormaroe merged 1 commit into
mainfrom
dependabot/nuget/src/nuget-group-b9b8bf7955

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github May 26, 2026

Copy link
Copy Markdown
Contributor

Updated ClosedXML from 0.102.0 to 0.105.0.

Release notes

Sourced from ClosedXML's releases.

0.105.0

What's Changed

Major enhancements

Automatic fixer of function names

Correct name for newer functions (post 2013) is not what is seen in the GUI (e.g. correct name for CONCAT is _xlfn.CONCAT). That is rather obscure fact not known to most developers. The formula setters (e.g. IXLCell.FormulaA1) now automatically fix function names, so it is stored correctly in the file.

using var wb = new XLWorkbook();
var ws = wb.AddWorksheet();
// Originally required "_xlfn.CONCAT(\"hello\", \" world!\")";
ws.Cell("A1").FormulaA1 = "CONCAT(\"hello\", \" world!\")"; 

Pre-0.105
image
0.105
image

Sorting updates references

In many cases, the sorted area has a column with references. The formula often references another row. Pre-0.105, the references in the formulas weren't updated correctly.
image

using var wb = new XLWorkbook();
var ws = wb.AddWorksheet();
ws.Cell("A1").Value = 4;
ws.Cell("B1").FormulaA1 = "A1+1";
ws.Cell("A2").Value = 2;
ws.Cell("B2").FormulaA1 = "A2+1";
ws.Cell("A3").Value = 1;
ws.Cell("B3").FormulaA1 = "A3+1";

ws.Range("A1:B3").Sort(1, XLSortOrder.Ascending);

Reimplementation/refactoring of old function infrastructure

Basically all implemented functions should be more faithful to how Excel behaves and evaluation of functions should be faster. implemented functions should be "complete" in sense that they correctly work for various arguments (e.g. various forms of ROMAN or pattern search in SUMIFS).

The functions (before refactoring) had serious problems with ranges, errors or type coercion or structured references. The original parser back then didn't even parse literal arrays ({1,2,3;4,5,6}). Parser and other things were updated, but because there was ~180 functions, original implementation was kept and functions were functions were reused through an adapter. Except the adapter never worked right and there were some other serious problems.

Changes

Bugfixes

0.105.0-rc

What's Changed

Major enhancements

Automatic fixer of function names

Correct name for newer functions (post 2013) is not what is seen in the GUI (e.g. correct name for CONCAT is _xlfn.CONCAT). That is rather obscure fact not known to most developers. The formula setters (e.g. IXLCell.FormulaA1) now automatically fix function names, so it is stored correctly in the file.

using var wb = new XLWorkbook();
var ws = wb.AddWorksheet();
// Originally required "_xlfn.CONCAT(\"hello\", \" world!\")";
ws.Cell("A1").FormulaA1 = "CONCAT(\"hello\", \" world!\")"; 

Pre-0.105
image
0.105
image

Sorting updates references

In many cases, the sorted area has a column with references. The formula often references another row. Pre-0.105, the references in the formulas weren't updated correctly.
image

using var wb = new XLWorkbook();
var ws = wb.AddWorksheet();
ws.Cell("A1").Value = 4;
ws.Cell("B1").FormulaA1 = "A1+1";
ws.Cell("A2").Value = 2;
ws.Cell("B2").FormulaA1 = "A2+1";
ws.Cell("A3").Value = 1;
ws.Cell("B3").FormulaA1 = "A3+1";

ws.Range("A1:B3").Sort(1, XLSortOrder.Ascending);

Reimplementation/refactoring of old function infrastructure

Basically all implemented functions should be more faithful to how Excel behaves and evaluation of functions should be faster. implemented functions should be "complete" in sense that they correctly work for various arguments (e.g. various forms of ROMAN or pattern search in SUMIFS).

The functions (before refactoring) had serious problems with ranges, errors or type coercion or structured references. The original parser back then didn't even parse literal arrays ({1,2,3;4,5,6}). Parser and other things were updated, but because there was ~180 functions, original implementation was kept and functions were functions were reused through an adapter. Except the adapter never worked right and there were some other serious problems.

Changes

Bugfixes

0.104.2

What's Changed

Full Changelog: ClosedXML/ClosedXML@0.104.1...0.104.2

0.104.1

Release notes from 0.102.1 to the 0.104.1.

Summary of breaking changes is available at docs.closedxml.io:

OpenXML SDK

OpenXML SDK has released version 3. The 0.104.0 uses it as a dependency.

XLParser replaced with ClosedParser

The XLParser has been replaced with ClosedParser. The key benefits are

  • performance - ~2μs/formula, it's likely formulas will be parseable on the demand, necessary for construction of dependency tree
  • A1/R1C1 parsing parity - both modes can be parsed with no problems
  • AST oriented - it's likely a construction of AST in memory won't even be necessary, just use AST factory to evaluate formula directly

There is also a visualizer to display AST in a browser at https://parser.closedxml.io

image

Formula Calculation

In previous version, formulas used to be calculated recursively. Each formula checked it's supporting cells for other formulas and if there were some, they were recursively evaluated. There was some logic to decrease number of evaluations. That works for a very simple cases, but isn't very good for various non-happy paths (i.e. cells weren't calculated when they should be).

This version has replaced it with a standard

  • dependency tree for checking which formulas are dirty and need to be recalculated
  • calculation chain that manages dependencies and order of formulas during calculation

For more info, see docs, the Microsoft has a page about principles Excel Recalculation
and there is one with API at docs.closedxml.io.

image

Structured references

New parser also allows a basic evaluation of structured references. Format of structured reference must use official grammar, not Excel friendly names (e.g. Pastry[@​Name] is user-friendly name for Pastry[[#This Row],[Name]]). It's now possible to

using var wb = new XLWorkbook();
var ws = wb.AddWorksheet();
ws.Cell("A1").InsertTable(new Pastry[]
{
    new("Cake", 14),
    new("Waffle", 3),
}, "Pastry");

ws.Cell("D1").FormulaA1 = "SUM(Pastry[Price])";
ws.Cell("D3").FormulaA1 = "\"Pastry \" & Pastry[[#This Row],[Name]]";
wb.RecalculateAllFormulas();
 ... (truncated)

## 0.104-rc1

A release candidate 1 for 0.104.0. 

* [Migration from 0.102 to 0.103](https://docs.closedxml.io/en/latest/migrations/migrate-to-0.103.html)
* [Migration from 0.103 to 0.104](https://docs.closedxml.io/en/latest/migrations/migrate-to-0.104.html)

Of course, this includes all stuff from [0.103.0-beta](https://github.com/ClosedXML/ClosedXML/releases/tag/0.103.0-beta). Version 0.103 never got a non-beta release.

# OpenXML SDK

OpenXML SDK has released version 3.0.1. The 0.104-rc1 uses it as a dependency. 

# Pivot tables

The internal structure of pivot tables, along with most other features, has been completely overhauled. This update should significantly reduce crashes when loading and saving workbooks containing pivot tables.

The main issue with the previous internal structure was that it didn't align with the structure used by OOXML. This was problematic because we need to support all valid files. As a result, we have to handle a wide range of inputs and correctly convert them to our internal structure, which is rather hard. A more clear 1:1 mapping with OOXML is much simpler and more reliable.

# AutoFilter

The Autofilter feature has been revamped, which includes some API changes. Its behavior is now more closely aligned with how Excel operates. The XML documentation provides detailed explanations, and there is a [dedicated documentation page](https://docs.closedxml.io/en/latest/features/autofilter.html). Several bugs have also been fixed.

For more details, refer to the [Autofilter section of the migration guide](https://docs.closedxml.io/en/latest/migrations/migrate-to-0.104.html#autofilter).

# CommonCrawl dataset

When workbook is a valid one, ClosedXML shouldn't throw on load. That is a rather high priority (more than saving or manipulation). Unfortunately, that is hard to find such areas that cause most problems.

One of activities that was going in a background is trying to use excel files around the internet (found by CommonCrawl) to evaluate how bad it is. There aren't results yet, but it is something that is going on.



# What's Changed

## Breaking changes
* First page number can be negative -> change API type to int by @​jahav in https://github.com/ClosedXML/ClosedXML/pull/2237
* Rename IXLNamedRange to IXLDefinedName by @​jahav in https://github.com/ClosedXML/ClosedXML/pull/2258

## AutoFilter
* AutoFilter rework - 1/? - Regular filter matches string. by @​jahav in https://github.com/ClosedXML/ClosedXML/pull/2238
* AutoFilter rework - 2/? - fix types for custom filters by @​jahav in https://github.com/ClosedXML/ClosedXML/pull/2239
* AutoFilter rework - 3/? - Top and average filter refactor, remove setters of internal state by @​jahav in https://github.com/ClosedXML/ClosedXML/pull/2240
* AutoFilter rework - 4/? - Top/Average filters work after loading by @​jahav in https://github.com/ClosedXML/ClosedXML/pull/2241
* AutoFilter rework - 5/? - Unify Regular and DateTimeGrouping filters by @​jahav in https://github.com/ClosedXML/ClosedXML/pull/2242
* AutoFilter rework - 6/7 - Add tests by @​jahav in https://github.com/ClosedXML/ClosedXML/pull/2243
* AutoFilter rework - 7/7 - Add documentation by @​jahav in https://github.com/ClosedXML/ClosedXML/pull/2245

## Formulas
* Update ClosedXML.Parser to 1.0 by @​jahav in https://github.com/ClosedXML/ClosedXML/pull/2250
* Implement structured references by @​jahav in https://github.com/ClosedXML/ClosedXML/pull/2251
* Replace regex-powered code for A1-R1C1 formula conversion with AST-based one by @​jahav in https://github.com/ClosedXML/ClosedXML/pull/2253
 ... (truncated)

## 0.104.0-preview2

Second test release for checking SourceLink support on nuget (first failed due to fody/PDB checksum) https://github.com/ClosedXML/ClosedXML/issues/2070

## 0.104.0-preview1

Test release for checking SourceLink support #​2070 

## 0.103.0-beta

There won't be a non-beta release for 0.103. The production release will be 0.104, not 0.103. This milestone was about fixing technical debt, but ultimately it needs some more time to mature before it is sent to the users.

There are some nice performance updates, so in spirit of release early, release often, there will be a beta package on nuget. 

# Breaking changes

Rich text is now immutable behind the scenes (and will likely be turned into immutable in the future). It should be transparent to the user, though `IXLPhonetic` no longer has a setter for its `IXLPhonetic.Text`, `IXLPhonetic.Start` and `IXLPhonetic.End` properties.

New calculation engine just works in a different way and will behave differently.

# Significant changes
## XLParser replaced with ClosedParser
The [*XLParser*](https://github.com/spreadsheetlab/XLParser) has been replaced with [*ClosedParser*](https://github.com/ClosedXML/ClosedXML.Parser). The key benefits are
* performance - ~2μs/formula, it's likely formulas will be parseable on the demand, necessary for construction of dependency tree
* A1/R1C1 parsing parity - both modes can be parsed with no problems
* AST oriented - it's likely a construction of AST in memory won't even be necessary, just use AST factory to evaluate formula directly

There is also a visualizer to display AST in a browser at **[https://parser.closedxml.io](https://parser.closedxml.io)**

![image](https://github.com/ClosedXML/ClosedXML.Parser/assets/7634052/4beaab23-4599-44d4-be7b-705178b69f99)

## Formula Calculation 

In previous version, formulas used to be calculated recursively. Each formula checked it's supporting cells for other formulas and if there were some, they were recursively evaluated. There was some  logic to decrease number of evaluations. That works for a very simple cases, but isn't very good for various non-happy paths (i.e. cells weren't calculated when they should be).

This version has replaced it with a standard 
* dependency tree for checking which formulas are dirty and need to be recalculated
* calculation chain that manages dependencies and order of formulas during calculation

For more info, see docs, the Microsoft has a page about principles [Excel Recalculation](https://learn.microsoft.com/en-us/office/client-developer/excel/excel-recalculation)
 and there is one with API at [docs.closedxml.io](https://docs.closedxml.io/en/latest/concepts/formula-calculation.html).

![image](https://github.com/ClosedXML/ClosedXML/assets/7634052/2a621044-368a-4076-b121-cefb10150a6e)

## Workbook structure

Internal structure has been cleaned up and optimized.

The dirty tracking has been moved out of cells to formulas and thus memory taken up by a single cell value is now only 16 bytes instead of 24 (?) bytes in 0.102. Of course there are some other structures around that take up memory as well, but the single cell value is now 16 bytes (I hoped for 8, but not feasible with `double`, `DateTime` and `TimeSpan` as possible cell values - all take up 8 bytes... not enough bits).

The same string in different instances is now not duplicated, but only one instance is used. As seen on following test, it can lead to significant decrease in memory consumption. 250k rows with 10 text rows (same string, different instance): 117 MiB om 0.103 vs 325 MiB in 0.102.1.

## `InsertData` performance 

Insert 250k rows of 10 columns of text and 5 columns of numbers ([gist](https://gist.github.com/jahav/bdc5fe3c90f25544ca6ae1394bbe3561)). 

| Description      |     Rows  |           Columns      | Time/Memory to insert data | Save workbook | Total time/memory | 
|-----------------|-----------|------------------------|----------------------------|------------------------------|---|
| **0.103.0-beta**    |   250 000 | 15 | **1.619 sec / 117 MiB** |  6.343 sec | 477 MiB |
| 0.102.1    |   250 000 | 15 | 7.160 sec / 325 MiB |  6.676 sec | 692 MiB |
 ... (truncated)

## 0.102.3

## What's Changed
* Eliminate a couple of performance killers by @​Pankraty in https://github.com/ClosedXML/ClosedXML/pull/2363

**Full Changelog**: https://github.com/ClosedXML/ClosedXML/compare/0.102.2...0.102.3

## 0.102.2

Add a warning about allowed ranges of DocumentFormat.OpenXML see issue #​2220 and PR #​2246.

## What's Changed
* Add dependency version range for DocumentFormat.OpenXml by @​jahav in https://github.com/ClosedXML/ClosedXML/pull/2246


**Full Changelog**: https://github.com/ClosedXML/ClosedXML/compare/0.102.1...0.102.2

## 0.102.1

SixLabors.Fonts has released version 1.0.0 and some NET Framework projects suddently have errors due to NuGet behavior.

If a project is consuming ClosedXML through `package.config` instead of [`PackageReference` style projects](https://learn.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files), the NuGet will resolve version 1.0.0 instead of declared beta19 dependency. SixLabors.Fonts has API changes and thus it will start to throw `MissingMethodException`s.

The issue should only affect net framework projects, not dotnet core that use `PackageReference` style by default.

## What's Changed
* Update SixLabors.Fonts dependency to version 1.0.0 by @​jahav in https://github.com/ClosedXML/ClosedXML/pull/2149

**Full Changelog**: https://github.com/ClosedXML/ClosedXML/compare/0.102.0...0.102.1

Commits viewable in [compare view](https://github.com/ClosedXML/ClosedXML/compare/0.102.0...0.105.0).
</details>

Updated [coverlet.collector](https://github.com/coverlet-coverage/coverlet) from 6.0.4 to 10.0.1.

<details>
<summary>Release notes</summary>

_Sourced from [coverlet.collector's releases](https://github.com/coverlet-coverage/coverlet/releases)._

## 10.0.1

### Improvements

- Coverlet with MTP 2 doesn't show test coverage statistic in console [#​1907](https://github.com/coverlet-coverage/coverlet/issues/1907)
- Avoid unnecessary testhost restarts [#​1912](https://github.com/coverlet-coverage/coverlet/issues/1912) by <https://github.com/mawosoft>

### Fixed

- Fix inconsistent paths in cobertura reports [#​1723](https://github.com/coverlet-coverage/coverlet/issues/1723)
- Fix when using "is" with "and" in pattern matching, branch coverage is lower than normal [#​1313](https://github.com/coverlet-coverage/coverlet/issues/1313)
- Fix Coverlet flagging a branch for an async functions finally block where none exists [#​1337](https://github.com/coverlet-coverage/coverlet/issues/1337)
- Fix Coverlet Tracker Missing CompilerGeneratedAttribute [#​1828](https://github.com/coverlet-coverage/coverlet/issues/1828)

### Maintenance

- Add architecture docs and diagrams for all integrations [#​1927](https://github.com/coverlet-coverage/coverlet/pull/1927)
- Update NuGet packages and .NET SDK versions [#​1933](https://github.com/coverlet-coverage/coverlet/pull/1933)

[Diff between 10.0.0 and 10.0.1](https://github.com/coverlet-coverage/coverlet/compare/v10.0.0...v10.0.1)

## 10.0.0

## Improvements

- Unique Report Filenames (coverlet.MTP and AzDO) [#​1866](https://github.com/coverlet-coverage/coverlet/issues/1866)
- Add `--coverlet-file-prefix` option for unique report files [#​1869](https://github.com/coverlet-coverage/coverlet/pull/1869)
- Introduce .NET 10 support [#​1823](https://github.com/coverlet-coverage/coverlet/pull/1823)

## Fixed

- Fix [BUG] Wrong branch rate on IAsyncEnumerable for generic type [#​1836](https://github.com/coverlet-coverage/coverlet/issues/1836)
- Fix [BUG] Missing Coverage after moving to MTP [#​1843](https://github.com/coverlet-coverage/coverlet/issues/1843)
- Fix [BUG] No coverage reported when targeting .NET Framework with 8.0.1 [#​1842](https://github.com/coverlet-coverage/coverlet/issues/1842)
- Fix [BUG] Behavior changes between MTP and Legacy (msbuild) [#​1878](https://github.com/coverlet-coverage/coverlet/issues/1878)
- Fix [BUG] Coverlet.MTP - Unable to load coverlet.mtp.appsettings.json [#​1880](https://github.com/coverlet-coverage/coverlet/issues/1880)
- Fix [BUG] Coverlet.Collector produces empty report when Mediator.SourceGenerator is referenced [#​1718](https://github.com/coverlet-coverage/coverlet/issues/1718) by <https://github.com/yusyd>
- Fix [BUG] Crash during instrumentation (Methods using LibraryImport/DllImport have no body) [#​1762](https://github.com/coverlet-coverage/coverlet/issues/1762)

## Maintenance

- Add comprehensive async method tests and documentation for issue [#​1864](https://github.com/coverlet-coverage/coverlet/pull/1864)
- Replace Tmds.ExecFunction Package in coverlet.core.coverage.tests [#​1833](https://github.com/coverlet-coverage/coverlet/issues/1833)
- Add net9.0 and net10.0 targets [#​1822](https://github.com/coverlet-coverage/coverlet/issues/1822)

[Diff between 8.0.1 and 10.0.0](https://github.com/coverlet-coverage/coverlet/compare/v8.0.1...v10.0.0)

## 8.0.1

### Fixed
- Fix [BUG] TypeInitializationException when targeting .NET Framework [#​1818](https://github.com/coverlet-coverage/coverlet/issues/1818)
- Fix [BUG] coverlet.MTP build fails with CS0400 due to developmentDependency=true [#​1827](https://github.com/coverlet-coverage/coverlet/issues/1827)

### Improvements
- Additional improvements needed for .NET Framework instrumentation type import [#​1825](https://github.com/coverlet-coverage/coverlet/issues/1825)

[Diff between 8.0.0 and 8.0.1](https://github.com/coverlet-coverage/coverlet/compare/v8.0.0...v8.0.1)


## 8.0.0

**Special Thanks:** A huge thank you to [@​Bertk](https://github.com/Bertk) for driving the majority of the work in this release! 🎉

### Fixed
- Fix System.CommandLine 2.0 release is available [#​1776](https://github.com/coverlet-coverage/coverlet/issues/1776)
- Fix Excluding From Coverage bad defaults from given example [#​1764](https://github.com/coverlet-coverage/coverlet/issues/1764)
- Fix branchpoint exclusion for sdk 8.0.407 [#​1741](https://github.com/coverlet-coverage/coverlet/issues/1741)
- Fix missing copyright information in NuGet [#​1794](https://github.com/coverlet-coverage/coverlet/issues/1794)
- Fix bad default values in documentation [#​1764](https://github.com/coverlet-coverage/coverlet/issues/1764) by <https://github.com/cboudereau>

### Improvements

- Coverlet MTP extension feature [#​1788](https://github.com/coverlet-coverage/coverlet/pull/1788)
- Generate SBOM for nuget packages [#​1752](https://github.com/coverlet-coverage/coverlet/pull/1752)
- Use multi targets projects for coverlet.collector, coverlet.msbuild.tasks packages [#​1742](https://github.com/coverlet-coverage/coverlet/pull/1742)
- Use .NET 8.0 target framework for coverlet.core and remove Newtonsoft.Json [#​1733](https://github.com/coverlet-coverage/coverlet/pull/1733)
- Use latest System.CommandLine version [#​1660](https://github.com/coverlet-coverage/coverlet/pull/1660)
- Upgraded minimum required .NET SDK and runtime to .NET 8.0 LTS (Long Term Support) (**Breaking Change**)
- Use [xunit.v3](https://xunit.net/docs/getting-started/v3/whats-new) for tests and example code

[Diff between 6.0.4 and 8.0.0](https://github.com/coverlet-coverage/coverlet/compare/v6.0.4...v8.0.0)

Commits viewable in [compare view](https://github.com/coverlet-coverage/coverlet/compare/v6.0.4...v10.0.1).
</details>

Updated [Microsoft.Data.SqlClient](https://github.com/dotnet/sqlclient) from 6.0.1 to 7.0.1.

<details>
<summary>Release notes</summary>

_Sourced from [Microsoft.Data.SqlClient's releases](https://github.com/dotnet/sqlclient/releases)._

## 7.0.1

This update brings the following changes since the [7.0.0](https://github.com/dotnet/SqlClient/blob/release/7.0/release-notes/7.0/7.0.0.md) release:

### Fixed

- Fixed `SqlBulkCopy` failing on SQL Server 2016 with `Invalid column name 'graph_type'` error. The column metadata query now uses dynamic SQL so that references to the `graph_type` column (introduced in SQL Server 2017) are not compiled on older versions that lack the column. ([#​3714](https://github.com/dotnet/SqlClient/issues/3714), [#​4092](https://github.com/dotnet/SqlClient/pull/4092), [#​4147](https://github.com/dotnet/SqlClient/pull/4147))

- Fixed `SqlBulkCopy` failing on Azure Synapse Analytics dedicated SQL pools. The column-list query previously used a variable-assignment pattern that Synapse does not support; it now uses `STRING_AGG` when targeting Synapse (engine edition 6) and falls back to the variable-assignment approach for SQL Server 2016 compatibility. ([#​4149](https://github.com/dotnet/SqlClient/issues/4149), [#​4176](https://github.com/dotnet/SqlClient/pull/4176), [#​4182](https://github.com/dotnet/SqlClient/pull/4182))

- Fixed `SqlDataReader.GetFieldType()` and `GetProviderSpecificFieldType()` returning `typeof(byte[])` instead of `typeof(SqlVector<float>)` for vector float32 columns. The methods now follow the same type-determination logic as `GetValue()`. ([#​4104](https://github.com/dotnet/SqlClient/issues/4104), [#​4105](https://github.com/dotnet/SqlClient/pull/4105), [#​4152](https://github.com/dotnet/SqlClient/pull/4152))

- Added missing `System.Data.Common` (v4.3.0) NuGet package dependency for .NET Framework consumers. The inbox `System.Data.Common` assembly on .NET Framework predates APIs such as `IDbColumnSchemaGenerator`; without the explicit NuGet dependency, consumers encountered `CS0012` compilation errors when using these types through `Microsoft.Data.SqlClient`. ([#​4063](https://github.com/dotnet/SqlClient/pull/4063), [#​4074](https://github.com/dotnet/SqlClient/pull/4074))

### Changed

- Enabled the User Agent TDS feature extension unconditionally. The `Switch.Microsoft.Data.SqlClient.EnableUserAgent` AppContext switch has been removed; the driver now always sends User Agent information during login. ([#​4124](https://github.com/dotnet/SqlClient/pull/4124), [#​4154](https://github.com/dotnet/SqlClient/pull/4154))

- Added type forwards from the core `Microsoft.Data.SqlClient` assembly to public types that were moved to the `Microsoft.Data.SqlClient.Extensions.Abstractions` package: `SqlAuthenticationMethod`, `SqlAuthenticationParameters`, `SqlAuthenticationProvider`, `SqlAuthenticationProviderException`, and `SqlAuthenticationToken`. This ensures binary compatibility for assemblies compiled against earlier versions of `Microsoft.Data.SqlClient` where these types lived in the core assembly. ([#​4067](https://github.com/dotnet/SqlClient/pull/4067), [#​4117](https://github.com/dotnet/SqlClient/pull/4117))

- Fixed API documentation include paths and duplicate doc snippets. ([#​4084](https://github.com/dotnet/SqlClient/pull/4084), [#​4086](https://github.com/dotnet/SqlClient/pull/4086), [#​4107](https://github.com/dotnet/SqlClient/pull/4107), [#​4161](https://github.com/dotnet/SqlClient/pull/4161))

## Contributors

We thank the following public contributors. Their efforts toward this project are very much appreciated.

- [edwardneal](https://github.com/edwardneal)

## Target Platform Support

- .NET Framework 4.6.2+ (Windows x86, Windows x64, Windows ARM64)
- .NET 8.0+ (Windows x86, Windows x64, Windows ARM, Windows ARM64, Linux, macOS)

### Dependencies

#### .NET 9.0

- Microsoft.Bcl.Cryptography 9.0.13
- Microsoft.Data.SqlClient.Extensions.Abstractions 1.0.0
- Microsoft.Data.SqlClient.Internal.Logging 1.0.0
- Microsoft.Data.SqlClient.SNI.runtime 6.0.2
- Microsoft.Extensions.Caching.Memory 9.0.13
- Microsoft.IdentityModel.JsonWebTokens 8.16.0
- Microsoft.IdentityModel.Protocols.OpenIdConnect 8.16.0
- Microsoft.SqlServer.Server 1.0.0
- System.Configuration.ConfigurationManager 9.0.13
- System.Security.Cryptography.Pkcs 9.0.13

#### .NET 8.0

- Microsoft.Bcl.Cryptography 8.0.0
- Microsoft.Data.SqlClient.Extensions.Abstractions 1.0.0
 ... (truncated)

## 7.0.0

This is the general availability release of **Microsoft.Data.SqlClient 7.0**, a major milestone for the .NET data provider for SQL Server. This release addresses the most upvoted issue in the repository's history — extracting Azure dependencies from the core package — introduces pluggable SSPI authentication, adds enhanced routing for Azure SQL Hyperscale, and delivers async read performance improvements.

Also released as part of this milestone:
- Released Microsoft.Data.SqlClient.Extensions.Abstractions 1.0.0. See [release notes](../Extensions/Abstractions/1.0/1.0.0.md).
- Released Microsoft.Data.SqlClient.Extensions.Azure 1.0.0. See [release notes](../Extensions/Azure/1.0/1.0.0.md).
- Released Microsoft.Data.SqlClient.Internal.Logging 1.0.0. See [release notes](../Internal/Logging/1.0/1.0.0.md).
- Released Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider 7.0.0. See [release notes](../add-ons/AzureKeyVaultProvider/7.0/7.0.0.md).

## Changes Since [7.0.0-preview4](7.0.0-preview4.md)

### Added

- Added actionable error message when Entra ID authentication methods are used without the `Microsoft.Data.SqlClient.Extensions.Azure` package installed, guiding users to install the correct package. ([#​3962](https://github.com/dotnet/SqlClient/issues/3962), [#​4046](https://github.com/dotnet/SqlClient/pull/4046))
- Added Azure authentication sample application. ([#​3988](https://github.com/dotnet/SqlClient/pull/3988))

### Changed

#### Other changes

- Renamed the `Microsoft.Data.SqlClient.Extensions.Logging` package to `Microsoft.Data.SqlClient.Internal.Logging` to indicate it is for internal use only and should not be referenced directly by application code. ([#​4038](https://github.com/dotnet/SqlClient/pull/4038))
- Fixed non-localized exception strings. ([#​4022](https://github.com/dotnet/SqlClient/pull/4022))
- Codebase merge and cleanup: ([#​3997](https://github.com/dotnet/SqlClient/pull/3997), [#​4052](https://github.com/dotnet/SqlClient/pull/4052))
- Various test improvements: ([#​3891](https://github.com/dotnet/SqlClient/pull/3891), [#​3996](https://github.com/dotnet/SqlClient/pull/3996), [#​4002](https://github.com/dotnet/SqlClient/pull/4002), [#​4034](https://github.com/dotnet/SqlClient/pull/4034), [#​4041](https://github.com/dotnet/SqlClient/pull/4041), [#​4044](https://github.com/dotnet/SqlClient/pull/4044))
- Documentation improvements (including Entra ID branding updates): ([#​4021](https://github.com/dotnet/SqlClient/pull/4021), [#​4047](https://github.com/dotnet/SqlClient/pull/4047), [#​4049](https://github.com/dotnet/SqlClient/pull/4049))
- Updated Dependencies ([#​4045](https://github.com/dotnet/SqlClient/pull/4045)):
  - Updated `Azure.Core` to v1.51.1
  - Updated `Azure.Identity` to v1.18.0
  - Updated `Azure.Security.KeyVault.Keys` to v4.9.0
  - Updated `Microsoft.Extensions.Caching.Memory` to v9.0.13 (.NET 9.0)
  - Updated `Microsoft.IdentityModel.JsonWebTokens` to v8.16.0
  - Updated `Microsoft.IdentityModel.Protocols.OpenIdConnect` to v8.16.0
  - Updated `Microsoft.Bcl.Cryptography` to v9.0.13 (.NET 9.0)
  - Updated `System.Configuration.ConfigurationManager` to v9.0.13 (.NET 9.0)
  - Updated `System.Diagnostics.DiagnosticSource` to v10.0.3
  - Updated `System.Security.Cryptography.Pkcs` to v9.0.13 (.NET 9.0)
  - Updated `System.Text.Json` to v10.0.3
  - Updated `System.Threading.Channels` to v10.0.3
  - Updated `System.ValueTuple` to v4.6.2

## Cumulative Changes Since [6.1](../6.1/README.md)

This section summarizes all changes across the 7.0 preview cycle for users upgrading from the latest 6.1 stable release.

### Changed

#### Azure Dependencies Removed from Core Package

*What Changed:*

- The core `Microsoft.Data.SqlClient` package no longer depends on `Azure.Core`, `Azure.Identity`, or their transitive dependencies (e.g., `Microsoft.Identity.Client`, `Microsoft.Web.WebView2`). Azure Active Directory / Entra ID authentication functionality (`ActiveDirectoryAuthenticationProvider` and related types) has been extracted into a new `Microsoft.Data.SqlClient.Extensions.Azure` package. ([#​1108](https://github.com/dotnet/SqlClient/issues/1108), [#​3680](https://github.com/dotnet/SqlClient/pull/3680), [#​3902](https://github.com/dotnet/SqlClient/pull/3902), [#​3904](https://github.com/dotnet/SqlClient/pull/3904), [#​3908](https://github.com/dotnet/SqlClient/pull/3908), [#​3917](https://github.com/dotnet/SqlClient/pull/3917), [#​3982](https://github.com/dotnet/SqlClient/pull/3982), [#​3978](https://github.com/dotnet/SqlClient/pull/3978), [#​3986](https://github.com/dotnet/SqlClient/pull/3986))
 ... (truncated)

## 7.0.0-preview4

### Changed

#### Azure Dependencies Removed from Core Package

*What Changed:*

- The core `Microsoft.Data.SqlClient` package no longer depends on `Azure.Core`, `Azure.Identity`, or their transitive dependencies (e.g., `Microsoft.Identity.Client`, `Microsoft.Web.WebView2`). Azure Active Directory / Entra authentication functionality (`ActiveDirectoryAuthenticationProvider` and related types) has been extracted into a new `Microsoft.Data.SqlClient.Extensions.Azure` package that can be installed separately when needed. ([#​1108](https://github.com/dotnet/SqlClient/issues/1108), [#​3680](https://github.com/dotnet/SqlClient/pull/3680), [#​3902](https://github.com/dotnet/SqlClient/pull/3902),  [#​3904](https://github.com/dotnet/SqlClient/pull/3904), [#​3908](https://github.com/dotnet/SqlClient/pull/3908),  [#​3917](https://github.com/dotnet/SqlClient/pull/3917), [#​3982](https://github.com/dotnet/SqlClient/pull/3982), [#​3978](https://github.com/dotnet/SqlClient/pull/3978), [#​3986](https://github.com/dotnet/SqlClient/pull/3986))
- To support this separation, two additional packages were introduced: `Microsoft.Data.SqlClient.Extensions.Abstractions` (shared types between the core driver and extensions) and `Microsoft.Data.SqlClient.Extensions.Logging` (shared ETW tracing infrastructure). ([#​3626](https://github.com/dotnet/SqlClient/pull/3626), [#​3628](https://github.com/dotnet/SqlClient/pull/3628), [#​3967](https://github.com/dotnet/SqlClient/pull/3967))

*Who Benefits:*

- All users benefit from a significantly lighter core package. Previously, the Azure dependency chain pulled in numerous assemblies (including `Azure.Core`, `Azure.Identity`, `Microsoft.Identity.Client`, and `Microsoft.Web.WebView2`) even for applications that only needed basic SQL Server connectivity. This was the most upvoted open issue in the repository ([#​1108](https://github.com/dotnet/SqlClient/issues/1108)).
- Users who do not use Azure AD authentication no longer carry Azure-related assemblies in their build output, reducing deployment size and eliminating confusion about unexpected dependencies.
- Users who do use Azure AD authentication can now manage Azure dependency versions independently from the core driver.

*Impact:*

- Applications using Azure AD authentication (e.g., `ActiveDirectoryPassword`, `ActiveDirectoryInteractive`, `ActiveDirectoryDefault`, etc.) must now install the `Microsoft.Data.SqlClient.Extensions.Azure` NuGet package separately. No code changes are required beyond adding the package reference.

### Added

#### Expose SSPI Context Provider as Public API

*What Changed:*

- Added the `SspiContextProvider` abstract class and a public `SspiContextProvider` property on `SqlConnection`, allowing applications to supply a custom SSPI context provider for integrated authentication. This enables custom Kerberos ticket negotiation and NTLM username/password authentication scenarios that the driver does not natively support. ([#​2253](https://github.com/dotnet/SqlClient/issues/2253), [#​2494](https://github.com/dotnet/SqlClient/pull/2494))

*Who Benefits:*

- Users authenticating across untrusted domains, non-domain-joined machines, or cross-platform environments where configuring integrated authentication on the client is difficult or impossible.
- Users running in containers who need manual Kerberos negotiation without deploying sidecars or external ticket-refresh mechanisms.
- Users who need NTLM username/password authentication to SQL Server, which the driver does not provide natively.

*Impact:*

- Applications can set a custom `SspiContextProvider` on `SqlConnection` before opening the connection. The provider handles the authentication token exchange during integrated authentication. This is an additive API — existing authentication behavior is unchanged when no custom provider is set. See [SspiContextProvider_CustomProvider.cs](../../doc/samples/SspiContextProvider_CustomProvider.cs) for a sample implementation.
- **Note:** The `SspiContextProvider` is a part of the connection pool key. Care should be taken when using this property to ensure the implementation returns a stable identity per resource.

#### Expose Default Transient Error List

*What Changed:*

- Exposed the default transient error codes list via the new `SqlConfigurableRetryFactory.BaselineTransientErrors` static property (returns a `ReadOnlyCollection<int>`), making it easier to extend the set of transient errors without copy-pasting from the repository source. ([#​3903](https://github.com/dotnet/SqlClient/pull/3903))

*Who Benefits:*

- Developers implementing custom retry logic who want to extend the built-in transient error list rather than replacing it.

*Impact:*

 ... (truncated)

## 7.0.0-preview3

## Preview Release 7.0.0-preview3.25342.7 - December 8, 2025

### Added

#### Support for .NET 10

*What Changed:*

- Updated pipelines and test suites to compile the driver using the .NET 10 SDK. Cleaned up unnecessary dependency references. 
  ([#​3686](https://github.com/dotnet/SqlClient/pull/3686))

*Who Benefits:*

- Developers targeting .NET 10.

*Impact:*

- Addressed .NET 10 warnings regarding unused/unnecessary dependencies.

#### Enable SqlClientDiagnosticListener in SqlCommand on .NET Framework

*What Changed:*

- Enabled SqlClientDiagnosticListener functionality on SqlCommand for .NET Framework.
  ([#​3658](https://github.com/dotnet/SqlClient/pull/3658))

*Who Benefits:*

- Developers requiring diagnostic information on .NET Framework.

*Impact:*

- Improved observability and diagnostics for SqlCommand on .NET Framework.

#### Enable User Agent Extension

*What Changed:*

- Enabled User Agent Feature Extension.
  ([#​3606](https://github.com/dotnet/SqlClient/pull/3606))

*Who Benefits:*

- Telemetry and diagnostics consumers.

*Impact:*

- When the `Switch.Microsoft.Data.SqlClient.EnableUserAgent` app context switch is enabled, the driver sends more detailed user agent strings. This switch is disabled by default. This change will assist with troubleshooting and quantifying driver usage by version and operating system.

### Fixed
 ... (truncated)

## 7.0.0-preview2

This update brings the following changes since the [7.0.0-preview1](7.0.0-preview1.md) release:

### Bug Fixes

- Fixed a debug assertion in connection pool (no impact to production code) ([#​3587](https://github.com/dotnet/SqlClient/pull/3587))
- Prevent uninitialized performance counters escaping `CreatePerformanceCounters` ([#​3623](https://github.com/dotnet/SqlClient/pull/3623))
- Fix SetProvider to return immediately if user-defined authentication provider found ([#​3620](https://github.com/dotnet/SqlClient/pull/3620))
- Allow SqlBulkCopy to operate on hidden columns ([#​3590](https://github.com/dotnet/SqlClient/pull/3590))
- Fix connection pool concurrency issue ([#​3632](https://github.com/dotnet/SqlClient/pull/3632))

### Added

#### App Context Switch for Ignoring Server-Provided Failover Partner

*What Changed:*

- A new app context switch `Switch.Microsoft.Data.SqlClient.IgnoreServerProvidedFailoverPartner` was introduced to let the client ignore server-provided failover partner info in Basic Availability Groups (BAGs). When the switch is enabled, only the failover partner specified in the connection string is used; server-supplied partner values are skipped. This context switch was introduced in PR [#​3625](https://github.com/dotnet/SqlClient/pull/3625).

*Who Benefits:*

- Applications connecting to SQL Server BAGs using TCP and custom ports, especially where the server's provided partner name lacks the protocol, host, or port. This avoids connection failures when the server-provided partner is incompatible or incomplete.
- Teams who manage availability groups and rely on client-side control of failover behavior in heterogeneous networking environments.

*Impact:*

- If your environment might be affected (i.e., you operate a BAG with custom ports, or have experienced failures after failover), you can enable the new switch in your application:

AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.IgnoreServerProvidedFailoverPartner", true);


- Then, ensure your connection string includes your preferred failover partner (with correct `tcp:host,port`) so that the client uses that instead of the server's suggestion.
- Without enabling this, by default, the client continues to prefer the server-provided partner, maintaining backwards compatibility.

#### Other Additions

- Add app context switch for enabling asynchronous multi-packet improvements ([#​3605](https://github.com/dotnet/SqlClient/pull/3605))

### Changed

#### Deprecation of `SqlAuthenticationMethod.ActiveDirectoryPassword`

*What Changed:*

- Username/Password authentication for Microsoft Entra (formerly Active Directory) has been deprecated. `SqlAuthenticationMethod.ActiveDirectoryPassword` is now marked as `[Obsolete]`. This change occurred in PR [#​3671](https://github.com/dotnet/SqlClient/pull/3671)

*Who benefits:*

- Teams moving toward stronger, passwordless or MFA-compliant auth (in line with changes across MSAL/Azure.Identity and Entra MFA enforcement). This aligns Microsoft.Data.SqlClient with Microsoft's direction to avoid username/password (ROPC) flows. See https://learn.microsoft.com/en-us/entra/identity/authentication/concept-mandatory-multifactor-authentication for more explanation of why this change is being made across Microsoft products/services.

 ... (truncated)

## 7.0.0-preview1

## Changes Since [6.1.0](https://github.com/dotnet/SqlClient/blob/main/release-notes/6.1/6.1.0.md)

This update brings the following changes since the [6.1.0](https://github.com/dotnet/SqlClient/blob/main/release-notes/6.1/6.1.0.md) release:

### Breaking Changes

- Removed `Constrained Execution Region` error handling blocks and associated `SqlConnection` cleanup which may affect how potentially-broken connections are expunged from the pool. ([#​3535](https://github.com/dotnet/SqlClient/pull/3535))

### Bug Fixes

- Packet multiplexing disabled by default, and several bug fixes. ([#​3534](https://github.com/dotnet/SqlClient/pull/3534), [#​3537](https://github.com/dotnet/SqlClient/pull/3537))

### Added

- `SqlColumnEncryptionCertificateStoreProvider` now works on Windows, Linux, and macOS. ([#​3014](https://github.com/dotnet/SqlClient/pull/3014))

### Changed

- Updated `SqlVector.Null` to return a nullable `SqlVector` instance in the reference API to match the implementation. ([#​3521](https://github.com/dotnet/SqlClient/pull/3521))

- Performance improvements for all built-in `SqlColumnEncryptionKeyStoreProvider` implementations. ([#​3554](https://github.com/dotnet/SqlClient/pull/3554))

- Various test improvements. ([#​3456](https://github.com/dotnet/SqlClient/pull/3456), [#​2968](https://github.com/dotnet/SqlClient/pull/2968), [#​3458](https://github.com/dotnet/SqlClient/pull/3458),  [#​3494](https://github.com/dotnet/SqlClient/pull/3494), [#​3559](https://github.com/dotnet/SqlClient/pull/3559), [#​3575](https://github.com/dotnet/SqlClient/pull/3575))

- Codebase merge project and related cleanup. ([#​3436](https://github.com/dotnet/SqlClient/pull/3436), [#​3434](https://github.com/dotnet/SqlClient/pull/3434), [#​3448](https://github.com/dotnet/SqlClient/pull/3448),  [#​3454](https://github.com/dotnet/SqlClient/pull/3454), [#​3462](https://github.com/dotnet/SqlClient/pull/3462),  [#​3435](https://github.com/dotnet/SqlClient/pull/3435), [#​3492](https://github.com/dotnet/SqlClient/pull/3492), [#​3473](https://github.com/dotnet/SqlClient/pull/3473), [#​3469](https://github.com/dotnet/SqlClient/pull/3469), [#​3394](https://github.com/dotnet/SqlClient/pull/3394), [#​3493](https://github.com/dotnet/SqlClient/pull/3493), [#​3593](https://github.com/dotnet/SqlClient/pull/3593))

- Documentation improvements. ([#​3490](https://github.com/dotnet/SqlClient/pull/3490))

- Updated `Azure.Identity` dependency to v1.14.2. ([#​3538](https://github.com/dotnet/SqlClient/pull/3538))

## Changes Since [6.0.2](https://github.com/dotnet/SqlClient/blob/main/release-notes/6.0/6.0.2.md)

This update brings the following changes since the [6.0.2](https://github.com/dotnet/SqlClient/blob/main/release-notes/6.0/6.0.2.md) release.  Changes already noted above are omitted:

### Additions

#### Added dedicated SQL Server vector datatype support

*What Changed:*

- Optimized vector communications between MDS and SQL Server 2025, employing a custom binary format over the TDS protocol. ([#​3433](https://github.com/dotnet/SqlClient/pull/3433), [#​3443](https://github.com/dotnet/SqlClient/pull/3443))
- Reduced processing load compared to existing JSON-based vector support.
- Initial support for 32-bit single-precision floating point vectors.

*Who Benefits:*

- Applications moving large vector data sets will see beneficial improvements to processing times and memory requirements.
- Vector-specific APIs are ready to support future numeric representations with a consistent look-and-feel.

*Impact:*
 ... (truncated)

## 6.1.5

This update brings the following changes since the [6.1.4](https://github.com/dotnet/SqlClient/blob/main/release-notes/6.1/6.1.4.md) release:

### Fixed

- Fixed a connection performance regression where SPN (Service Principal Name) generation was triggered for non-integrated authentication modes (e.g., SQL authentication) on the native SNI path, causing unnecessary DNS lookups and significantly slower connection times.  Only affects .NET on Windows (not .NET Framework). ([#​3523](https://github.com/dotnet/SqlClient/issues/3523), [#​3946](https://github.com/dotnet/SqlClient/pull/3946))
- Fixed `ExecuteScalar` to properly propagate errors when the server sends data followed by an error token. Previously, errors such as conversion failures during `WHERE` clause evaluation were silently consumed during `SqlDataReader.Close()` instead of being thrown to the caller, which could result in transactions being unexpectedly zombied. ([#​3736](https://github.com/dotnet/SqlClient/issues/3736), [#​3947](https://github.com/dotnet/SqlClient/pull/3947))
- Fixed `SqlDataReader.GetFieldType` and `SqlDataReader.GetProviderSpecificFieldType` to return the correct type (`SqlVector<float>`) for vector float32 columns. Previously, these methods did not follow the same type-resolution logic as `GetValue`, returning an incorrect type for vector columns. ([#​4104](https://github.com/dotnet/SqlClient/issues/4104), [#​4151](https://github.com/dotnet/SqlClient/pull/4151))

## Target Platform Support

- .NET Framework 4.6.2+ (Windows x86, Windows x64, Windows ARM64)
- .NET 8.0+ (Windows x86, Windows x64, Windows ARM64, Linux, macOS)
- .NET Standard 2.0+ (Windows x86, Windows x64, Windows ARM64, Linux, macOS)

### Dependencies

#### .NET Framework 4.6.2

- Azure.Core 1.50.0
- Azure.Identity 1.17.1
- Microsoft.Data.SqlClient.SNI 6.0.2
- Microsoft.Extensions.Caching.Memory 8.0.1
- Microsoft.Identity.Client 4.80.0
- Microsoft.IdentityModel.JsonWebTokens 7.7.1
- Microsoft.IdentityModel.Protocols.OpenIdConnect 7.7.1
- System.Buffers 4.6.1
- System.Data.Common 4.3.0
- System.Diagnostics.DiagnosticSource 8.0.1
- System.IdentityModel.Tokens.Jwt 7.7.1
- System.Memory 4.6.3
- System.Security.Cryptography.Pkcs 8.0.1
- System.Text.Json 8.0.6
- System.Text.RegularExpressions 4.3.1

#### .NET 8.0

- Azure.Core 1.50.0
- Azure.Identity 1.17.1
- Microsoft.Data.SqlClient.SNI.runtime 6.0.2
- Microsoft.Extensions.Caching.Memory 8.0.1
- Microsoft.Identity.Client 4.80.0
- Microsoft.IdentityModel.JsonWebTokens 7.7.1
- Microsoft.IdentityModel.Protocols.OpenIdConnect 7.7.1
- Microsoft.SqlServer.Server 1.0.0
- System.Configuration.ConfigurationManager 8.0.1
- System.Diagnostics.DiagnosticSource 8.0.1
- System.IdentityModel.Tokens.Jwt 7.7.1
- System.Security.Cryptography.Pkcs 8.0.1

#### .NET 9.0
 ... (truncated)

## 6.1.4

This update brings the following changes since the [6.1.3](https://github.com/dotnet/SqlClient/blob/main/release-notes/6.1/6.1.3.md) release:

### Fixed

- Fixed NullReferenceException issue with `SqlDataAdapter` when processing batch scenarios where certain SQL RPC calls may not include system parameters.
  ([#​3877](https://github.com/dotnet/SqlClient/pull/3877))
- Fixed connection pooling issue where extra connection deactivation was causing active connection counts to go negative.
  ([#​3776](https://github.com/dotnet/SqlClient/pull/3776))

### Added

#### AppContext Switch for enabling MultiSubnetFailover

*What Changed:*

- Added new AppContext switch `Switch.Microsoft.Data.SqlClient.EnableMultiSubnetFailoverByDefault` to set `MultiSubnetFailover=true` by default in connection string.
  ([#​3851](https://github.com/dotnet/SqlClient/pull/3851))

*Who Benefits:*

- Applications that need MultiSubnetFailover enabled globally without modifying connection strings.

*Impact:*

- Applications can now enable MultiSubnetFailover globally using one of the following methods:

```c#
// In application code
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.EnableMultiSubnetFailoverByDefault", true);
// In runtimeconfig.json
{
  "configProperties": {
    "Switch.Microsoft.Data.SqlClient.EnableMultiSubnetFailoverByDefault": true
  }
}
<!-- In App.Config -->
<runtime>
  <AppContextSwitchOverrides value="Switch.Microsoft.Data.SqlClient.EnableMultiSubnetFailoverByDefault=true" />
</runtime>

Changed

  • Optimized SqlStatistics execution timing by using Environment.TickCount instead of more expensive timing mechanisms.
    ... (truncated)

6.1.3

This update includes the following changes since the 6.1.2 release:

Added

App Context Switch for Ignoring Server-Provided Failover Partner

What Changed:

  • A new app context switch Switch.Microsoft.Data.SqlClient.IgnoreServerProvidedFailoverPartner was introduced to let the client ignore server-provided failover partner info in Basic Availability Groups (BAGs). When the switch is enabled, only the failover partner specified in the connection string is used; server-supplied partner values are skipped. This context switch was introduced in PR #​3702.

Who Benefits:

  • Applications connecting to SQL Server BAGs using TCP and custom ports, especially where the server's provided partner name lacks the protocol, host, or port. This avoids connection failures when the server-provided partner is incompatible or incomplete.
  • Teams who manage availability groups and rely on client-side control of failover behavior in heterogeneous networking environments.

Impact:

  • If your environment might be affected (i.e., you operate a BAG with custom ports, or have experienced failures after failover), you can enable the new switch in your application:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.IgnoreServerProvidedFailoverPartner", true);
  • Then, ensure your connection string includes your preferred failover partner (with correct tcp:host,port) so that the client uses that instead of the server's suggestion.
  • Without enabling this, by default, the client continues to prefer the server-provided partner, maintaining backwards compatibility.

Fixed

  • Fixed an issue to ensure reliable metrics initialization during startup, preventing missed telemetry when EventSource is enabled early. (#​3718)

Target Platform Support

  • .NET Framework 4.6.2+ (Windows ARM64, Windows x86, Windows x64)
  • .NET 8.0+ (Windows x86, Windows x64, Windows ARM64, Windows ARM, Linux, macOS)

Dependencies

.NET Framework 4.6.2+

  • Azure.Core 1.47.1
  • Azure.Identity 1.14.2
  • Microsoft.Bcl.Cryptography 8.0.0
  • Microsoft.Data.SqlClient.SNI 6.0.2
  • Microsoft.Extensions.Caching.Memory 8.0.1
  • Microsoft.IdentityModel.JsonWebTokens 7.7.1
  • Microsoft.IdentityModel.Protocols.OpenIdConnect 7.7.1
  • System.Buffers 4.5.1
  • System.Data.Common 4.3.0
  • System.Security.Cryptography.Pkcs 8.0.1
  • System.Text.Encodings.Web 8.0.0
    ... (truncated)

6.1.2

This update brings the below changes over the previous stable release:

Fixed

  • Fixed an issue where initializing PerformanceCounters would throw System.InvalidOperationException #​3629
  • Fixed an issue where a Custom SqlClientAuthenticationProvider was being overwritten by default implementation. #​3651
  • Fixed a concurrency issue in connection pooling where the number of active connections could be lower than the configured maximum pool size. #​3653

6.1.1

This update includes the following changes since the 6.1.0 release:

Fixed

  • Reverted changes related to improving partial packet detection, fixup, and replay functionality. This revert addresses regressions introduced in 6.1.0. (#​3556)
  • Applied reference assembly corrections supporting vector, fixed JSON tests, and ensured related tests are enabled. #​3562
  • Fixed SqlVector<T>.Null API signature in Reference assembly. #​3521

Changed

  • Upgraded Azure.Identity and other dependencies to newer versions. (#​3538) (#​3552)

6.1.0

Release Notes

[!WARNING]
This release version is delisted from NuGet.org and is no longer supported.
It contains critical bugs that make it unsuitable for use.

Stable Release 6.1.0 - 2025-07-25

This update brings the following changes since the 6.0.2 stable release:

Added

Added dedicated SQL Server vector datatype support

What Changed:

  • Optimized vector communications between MDS and SQL Server 2025, employing a custom binary format over the TDS protocol. (#​3433, #​3443)
  • Reduced processing load compared to existing JSON-based vector support.
  • Initial support for 32-bit single-precision floating point vectors.

Who Benefits:

  • Applications moving large vector data sets will see beneficial improvements to processing times and memory requirements.
  • Vector-specific APIs are ready to support future numeric representations with a consistent look-and-feel.

Impact:

  • Reduced transmission and processing times for vector operations versus JSON using SQL Server 2025 preview:
    • Reads: 50x improvement
    • Writes: 3.3x improvement
    • Bulk Copy: 19x improvement
    • (Observed with vector column of max 1998 size, and 10,000 records for each operation.)
  • Improved memory footprint due to the elimination of JSON serialization/deserialization and string representation bloat.
  • For backwards compatibility with earlier SQL Server Vector implementations, applications may continue to use JSON strings to send/receive vector data, although they will not see any of the performance improvements noted above.

Revived .NET Standard 2.0 target support

What Changed:

Who Benefits:

  • Libraries that depend on MDS may seamlessly target any of the following frameworks:
    • .NET Standard 2.0
    • .NET Framework 4.6.2 and above
    • .NET 8.0
    • .NET 9.0
  • Applications should continue to target runtimes.
    ... (truncated)

6.1.0-preview2

Preview Release 6.1.0-preview2.25178.5 - 2025-06-27

This update brings the following changes since the 6.1.0-preview1 release:

Added

Added dedicated SQL Server vector datatype support

What Changed:

  • Optimized vector communications between MDS and SQL Server 2025, employing a custom binary format over the TDS protocol. (#​3433, #​3443)
  • Reduced processing load compared to existing JSON-based vector support.
  • Initial support for 32-bit single-precision floating point vectors.

Who Benefits:

  • Applications moving large vector data sets will see beneficial improvements to processing times and memory requirements.
  • Vector-specific APIs are ready to support future numeric representations with a consistent look-and-feel.

Impact:

  • Reduced transmission and processing times for vector operations versus JSON using SQL Server 2025 preview:
    • Reads: 50x improvement
    • Writes: 3.3x improvement
    • Bulk Copy: 19x improvement
    • (Observed with vector column of max 1998 size, and 10,000 records for each operation.)
  • Improved memory footprint due to the elimination of JSON serialization/deserialization and string representation bloat.
  • For backwards compatibility with earlier SQL Server Vector implementations, applications may continue to use JSON strings to send/receive vector data, although they will not see any of the performance improvements noted above.

Revived .NET Standard 2.0 target support

What Changed:

Who Benefits:

  • Libraries that depend on MDS may seamlessly target any of the following frameworks:
    • .NET Standard 2.0
    • .NET Framework 4.6.2 and above
    • .NET 8.0
    • .NET 9.0
  • Applications should continue to target runtimes.
    • The MDS .NET Standard 2.0 target framework support does not include an actual implementation, and cannot be used with a runtime.
    • An application's build/publish process should always pick the appropriate MDS .NET/.NET Framework runtime implementation.
    • Custom build/publish actions that incorrectly try to deploy the MDS .NET Standard 2.0 reference DLL at runtime are not supported.

Impact:

... (truncated)

6.1.0-preview1

This update brings the following changes over the previous release:

Added

  • Added packet multiplexing support to improve large data read performance. #​2714 #​3161 #​3202
  • Added support for special casing with Fabric endpoints. #​3084

Fixed

  • Fixed distributed transactions to be preserved during pooled connection resets. #​3019.
  • Fixed application crash when the Data Source parameter begins with a comma. #​3250.
  • Resolved synonym count discrepancies in debug mode. #​3098.
  • Addressed warnings for down-level SSL/TLS versions. #​3126.

Changed

Description has been truncated

Bumps ClosedXML from 0.102.0 to 0.105.0
Bumps coverlet.collector from 6.0.4 to 10.0.1
Bumps Microsoft.Data.SqlClient from 6.0.1 to 7.0.1
Bumps Microsoft.NET.Test.Sdk from 17.14.1 to 18.6.0
Bumps xunit.runner.visualstudio from 3.1.4 to 3.1.5

---
updated-dependencies:
- dependency-name: ClosedXML
  dependency-version: 0.105.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: nuget-group
- dependency-name: coverlet.collector
  dependency-version: 10.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: nuget-group
- dependency-name: Microsoft.Data.SqlClient
  dependency-version: 7.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: nuget-group
- dependency-name: Microsoft.NET.Test.Sdk
  dependency-version: 18.6.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: nuget-group
- dependency-name: xunit.runner.visualstudio
  dependency-version: 3.1.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: nuget-group
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file .NET Pull requests that update .NET code labels May 26, 2026
@tormaroe tormaroe merged commit e44e1eb into main May 26, 2026
1 check passed
@dependabot dependabot Bot deleted the dependabot/nuget/src/nuget-group-b9b8bf7955 branch May 26, 2026 20:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file .NET Pull requests that update .NET code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant