diff --git a/src/Microsoft.Data.SqlClient/netcore/ref/Microsoft.Data.SqlClient.csproj b/src/Microsoft.Data.SqlClient/netcore/ref/Microsoft.Data.SqlClient.csproj
index f3d5bdc844..3215e42068 100644
--- a/src/Microsoft.Data.SqlClient/netcore/ref/Microsoft.Data.SqlClient.csproj
+++ b/src/Microsoft.Data.SqlClient/netcore/ref/Microsoft.Data.SqlClient.csproj
@@ -31,6 +31,9 @@
+
+ TypeForwards.Abstractions.cs
+
diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft.Data.SqlClient.csproj b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft.Data.SqlClient.csproj
index 6c54000f9c..7145dbac28 100644
--- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft.Data.SqlClient.csproj
+++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft.Data.SqlClient.csproj
@@ -1023,6 +1023,9 @@
TypeForwards.netcore.cs
+
+ TypeForwards.Abstractions.cs
+
diff --git a/src/Microsoft.Data.SqlClient/netfx/ref/Microsoft.Data.SqlClient.csproj b/src/Microsoft.Data.SqlClient/netfx/ref/Microsoft.Data.SqlClient.csproj
index 6765e009db..02ccf7356a 100644
--- a/src/Microsoft.Data.SqlClient/netfx/ref/Microsoft.Data.SqlClient.csproj
+++ b/src/Microsoft.Data.SqlClient/netfx/ref/Microsoft.Data.SqlClient.csproj
@@ -26,6 +26,9 @@
+
+ TypeForwards.Abstractions.cs
+
diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj
index 05a4284565..8408dabc0d 100644
--- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj
+++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft.Data.SqlClient.csproj
@@ -1006,6 +1006,9 @@
System\Runtime\CompilerServices\IsExternalInit.netfx.cs
+
+ TypeForwards.Abstractions.cs
+
diff --git a/src/Microsoft.Data.SqlClient/src/TypeForwards.Abstractions.cs b/src/Microsoft.Data.SqlClient/src/TypeForwards.Abstractions.cs
new file mode 100644
index 0000000000..f8272c5d2b
--- /dev/null
+++ b/src/Microsoft.Data.SqlClient/src/TypeForwards.Abstractions.cs
@@ -0,0 +1,9 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedTo(typeof(Microsoft.Data.SqlClient.SqlAuthenticationMethod))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedTo(typeof(Microsoft.Data.SqlClient.SqlAuthenticationParameters))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedTo(typeof(Microsoft.Data.SqlClient.SqlAuthenticationProvider))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedTo(typeof(Microsoft.Data.SqlClient.SqlAuthenticationProviderException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedTo(typeof(Microsoft.Data.SqlClient.SqlAuthenticationToken))]
diff --git a/src/Microsoft.Data.SqlClient/tests/UnitTests/TypeForwardTests.cs b/src/Microsoft.Data.SqlClient/tests/UnitTests/TypeForwardTests.cs
new file mode 100644
index 0000000000..8cb9811933
--- /dev/null
+++ b/src/Microsoft.Data.SqlClient/tests/UnitTests/TypeForwardTests.cs
@@ -0,0 +1,34 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System;
+using System.Reflection;
+using Xunit;
+
+namespace Microsoft.Data.SqlClient.UnitTests
+{
+ public class TypeForwardTests
+ {
+ private static readonly Assembly s_sqlClientAssembly = typeof(SqlConnection).Assembly;
+
+ [Theory]
+ [InlineData("Microsoft.Data.SqlClient.SqlAuthenticationMethod", true)]
+ [InlineData("Microsoft.Data.SqlClient.SqlAuthenticationParameters", false)]
+ [InlineData("Microsoft.Data.SqlClient.SqlAuthenticationProvider", false)]
+ [InlineData("Microsoft.Data.SqlClient.SqlAuthenticationProviderException", false)]
+ [InlineData("Microsoft.Data.SqlClient.SqlAuthenticationToken", false)]
+ public void AbstractionsType_CanBeLoadedFromSqlClientAssembly(string typeName, bool isEnum)
+ {
+ // Types moved to the Abstractions assembly must remain loadable via the
+ // Microsoft.Data.SqlClient assembly for backward compatibility.
+ Type? type = s_sqlClientAssembly.GetType(typeName, throwOnError: true);
+
+ Assert.NotNull(type);
+ Assert.Equal(isEnum, type.IsEnum);
+
+ // Assert that the assembly containing the type is the Abstractions assembly.
+ Assert.Equal("Microsoft.Data.SqlClient.Extensions.Abstractions", type.Assembly.GetName().Name);
+ }
+ }
+}