From c2a9395a93b5224f4c5f32d6b02bdbbf2a2eb63f Mon Sep 17 00:00:00 2001 From: Ben Russell Date: Fri, 1 Mar 2024 12:12:58 -0600 Subject: [PATCH 1/5] Downgrade xunit for better error logging from remote executor --- tools/props/Versions.props | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/props/Versions.props b/tools/props/Versions.props index 80db684225..d64c3e89fe 100644 --- a/tools/props/Versions.props +++ b/tools/props/Versions.props @@ -61,7 +61,7 @@ - 9.0.0-beta.23613.3 + 8.0.0-beta.24123.1 3.1.6 5.2.9 17.8.0 @@ -69,7 +69,7 @@ 4.3.0 6.0.1 6.35.0 - 2.6.3 + 2.4.2 2.5.5 1.0.3 7.0.0-beta.22316.1 From 211a7a302020f7f4825822b24cb8110fb1980b81 Mon Sep 17 00:00:00 2001 From: Ben Russell Date: Fri, 1 Mar 2024 13:23:17 -0600 Subject: [PATCH 2/5] All but one test improved ... ? --- .../TracingTests/DiagnosticTest.cs | 224 ++++++++---------- 1 file changed, 101 insertions(+), 123 deletions(-) diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/TracingTests/DiagnosticTest.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/TracingTests/DiagnosticTest.cs index 6aff5c727f..dbcd0d2e5c 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/TracingTests/DiagnosticTest.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/TracingTests/DiagnosticTest.cs @@ -25,9 +25,8 @@ namespace Microsoft.Data.SqlClient.ManualTesting.Tests public class DiagnosticTest { private const string BadConnectionString = "data source = bad; initial catalog = bad; integrated security = true; connection timeout = 1;"; - private static readonly string s_tcpConnStr = DataTestUtility.TCPConnectionString ?? string.Empty; - [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] + [Fact] public void ExecuteScalarTest() { RemoteExecutor.Invoke(() => @@ -41,14 +40,14 @@ public void ExecuteScalarTest() cmd.CommandText = "SELECT [name], [state] FROM [sys].[databases] WHERE [name] = db_name();"; conn.Open(); - var output = cmd.ExecuteScalar(); + cmd.ExecuteScalar(); } }); return RemoteExecutor.SuccessExitCode; }).Dispose(); } - [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] + [Fact] public void ExecuteScalarErrorTest() { RemoteExecutor.Invoke(() => @@ -59,19 +58,17 @@ public void ExecuteScalarErrorTest() using (SqlCommand cmd = new SqlCommand()) { cmd.Connection = conn; - cmd.CommandText = "select 1 / 0;"; + cmd.CommandText = "SELECT 1 / 0;"; conn.Open(); - try - { var output = cmd.ExecuteScalar(); } - catch { } + Assert.Throws(() => cmd.ExecuteScalar()); } }); return RemoteExecutor.SuccessExitCode; }).Dispose(); } - [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] + [Fact] public void ExecuteNonQueryTest() { RemoteExecutor.Invoke(() => @@ -85,14 +82,14 @@ public void ExecuteNonQueryTest() cmd.CommandText = "SELECT [name], [state] FROM [sys].[databases] WHERE [name] = db_name();"; conn.Open(); - var output = cmd.ExecuteNonQuery(); + cmd.ExecuteNonQuery(); } }); return RemoteExecutor.SuccessExitCode; }).Dispose(); } - [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] + [Fact] public void ExecuteNonQueryErrorTest() { RemoteExecutor.Invoke(() => @@ -100,29 +97,23 @@ public void ExecuteNonQueryErrorTest() CollectStatisticsDiagnostics(connectionString => { using (SqlConnection conn = new SqlConnection(connectionString)) + using (SqlCommand cmd = new SqlCommand()) { - using (SqlCommand cmd = new SqlCommand()) - { - cmd.Connection = conn; - cmd.CommandText = "select 1 / 0;"; + cmd.Connection = conn; + cmd.CommandText = "SELECT 1 / 0;"; - // Limiting the command timeout to 3 seconds. This should be lower than the Process timeout. - cmd.CommandTimeout = 3; - conn.Open(); - Console.WriteLine("SqlClient.DiagnosticTest.ExecuteNonQueryErrorTest Connection Open Successful"); + // Limiting the command timeout to 3 seconds. This should be lower than the Process timeout. + cmd.CommandTimeout = 3; + conn.Open(); - SqlException ex = Assert.Throws(() => cmd.ExecuteNonQuery()); - Console.WriteLine("SqlClient.DiagnosticTest.ExecuteNonQueryErrorTest Command Executed"); - } - Console.WriteLine("SqlClient.DiagnosticTest.ExecuteNonQueryErrorTest Command Disposed"); + Assert.Throws(() => cmd.ExecuteNonQuery()); } - Console.WriteLine("SqlClient.DiagnosticTest.ExecuteNonQueryErrorTest Connection Disposed"); }); return RemoteExecutor.SuccessExitCode; }).Dispose(); } - [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] + [Fact] public void ExecuteReaderTest() { RemoteExecutor.Invoke(() => @@ -138,14 +129,16 @@ public void ExecuteReaderTest() conn.Open(); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) - { } + { + // Read until end. + } } }); return RemoteExecutor.SuccessExitCode; }).Dispose(); } - [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] + [Fact] public void ExecuteReaderErrorTest() { RemoteExecutor.Invoke(() => @@ -156,22 +149,17 @@ public void ExecuteReaderErrorTest() using (SqlCommand cmd = new SqlCommand()) { cmd.Connection = conn; - cmd.CommandText = "select 1 / 0;"; + cmd.CommandText = "SELECT 1 / 0;"; - try - { - SqlDataReader reader = cmd.ExecuteReader(); - while (reader.Read()) - { } - } - catch { } + conn.Open(); + Assert.Throws(() => cmd.ExecuteReader()); } }); return RemoteExecutor.SuccessExitCode; }).Dispose(); } - [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] + [Fact] public void ExecuteReaderWithCommandBehaviorTest() { RemoteExecutor.Invoke(() => @@ -187,7 +175,9 @@ public void ExecuteReaderWithCommandBehaviorTest() conn.Open(); SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.Default); while (reader.Read()) - { } + { + // Read to end + } } }); return RemoteExecutor.SuccessExitCode; @@ -198,24 +188,27 @@ public void ExecuteReaderWithCommandBehaviorTest() [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup), nameof(DataTestUtility.IsNotAzureSynapse))] public void ExecuteXmlReaderTest() { - RemoteExecutor.Invoke(cs => + RemoteExecutor.Invoke(() => { CollectStatisticsDiagnostics(_ => { - using (SqlConnection conn = new SqlConnection(cs)) + // @TODO: Test TDS server doesn't support ExecuteXmlReader, so connect to real server as workaround + using (SqlConnection conn = new SqlConnection(DataTestUtility.TCPConnectionString)) using (SqlCommand cmd = new SqlCommand()) { cmd.Connection = conn; - cmd.CommandText = "select top 10 * from sys.objects for xml auto, xmldata;"; + cmd.CommandText = "SELECT TOP 10 * FROM sys.objects FOR xml auto, xmldata;"; conn.Open(); XmlReader reader = cmd.ExecuteXmlReader(); while (reader.Read()) - { } + { + // Read to end + } } }); return RemoteExecutor.SuccessExitCode; - }, s_tcpConnStr).Dispose(); + }).Dispose(); } [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] @@ -229,119 +222,109 @@ public void ExecuteXmlReaderErrorTest() using (SqlCommand cmd = new SqlCommand()) { cmd.Connection = conn; - cmd.CommandText = "select *, baddata = 1 / 0 from sys.objects for xml auto, xmldata;"; + cmd.CommandText = "SELECT *, baddata = 1 / 0 FROM sys.objects FOR xml auto, xmldata;"; - try - { - XmlReader reader = cmd.ExecuteXmlReader(); - while (reader.Read()) - { } - } - catch { } + conn.Open(); + Assert.Throws(() => cmd.ExecuteXmlReader()); } }); return RemoteExecutor.SuccessExitCode; }).Dispose(); } - [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] + [Fact] public void ExecuteScalarAsyncTest() { RemoteExecutor.Invoke(() => { CollectStatisticsDiagnosticsAsync(async connectionString => { - using (SqlConnection conn = new SqlConnection(connectionString)) - using (SqlCommand cmd = new SqlCommand()) + await using (SqlConnection conn = new SqlConnection(connectionString)) + await using (SqlCommand cmd = new SqlCommand()) { cmd.Connection = conn; cmd.CommandText = "SELECT [name], [state] FROM [sys].[databases] WHERE [name] = db_name();"; conn.Open(); - var output = await cmd.ExecuteScalarAsync(); + await cmd.ExecuteScalarAsync(); } - }).GetAwaiter().GetResult(); + }).Wait(); return RemoteExecutor.SuccessExitCode; }).Dispose(); } - [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] + [Fact] public void ExecuteScalarAsyncErrorTest() { RemoteExecutor.Invoke(() => { CollectStatisticsDiagnosticsAsync(async connectionString => { - using (SqlConnection conn = new SqlConnection(connectionString)) - using (SqlCommand cmd = new SqlCommand()) + await using (SqlConnection conn = new SqlConnection(connectionString)) + await using (SqlCommand cmd = new SqlCommand()) { cmd.Connection = conn; - cmd.CommandText = "select 1 / 0;"; + cmd.CommandText = "SELECT 1 / 0;"; conn.Open(); - - try - { var output = await cmd.ExecuteScalarAsync(); } - catch { } + await Assert.ThrowsAsync(() => cmd.ExecuteScalarAsync()); } - }).GetAwaiter().GetResult(); + }).Wait(); return RemoteExecutor.SuccessExitCode; }).Dispose(); } - [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] + [Fact] public void ExecuteNonQueryAsyncTest() { RemoteExecutor.Invoke(() => { CollectStatisticsDiagnosticsAsync(async connectionString => { - using (SqlConnection conn = new SqlConnection(connectionString)) - using (SqlCommand cmd = new SqlCommand()) + await using (SqlConnection conn = new SqlConnection(connectionString)) + await using (SqlCommand cmd = new SqlCommand()) { cmd.Connection = conn; cmd.CommandText = "SELECT [name], [state] FROM [sys].[databases] WHERE [name] = db_name();"; conn.Open(); - var output = await cmd.ExecuteNonQueryAsync(); + await cmd.ExecuteNonQueryAsync(); } - }).GetAwaiter().GetResult(); + }).Wait(); return RemoteExecutor.SuccessExitCode; }).Dispose(); } - [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] + [Fact] public void ExecuteNonQueryAsyncErrorTest() { RemoteExecutor.Invoke(() => { CollectStatisticsDiagnosticsAsync(async connectionString => { - using (SqlConnection conn = new SqlConnection(connectionString)) - using (SqlCommand cmd = new SqlCommand()) + await using (SqlConnection conn = new SqlConnection(connectionString)) + await using (SqlCommand cmd = new SqlCommand()) { cmd.Connection = conn; - cmd.CommandText = "select 1 / 0;"; + cmd.CommandText = "SELECT 1 / 0;"; conn.Open(); - try - { var output = await cmd.ExecuteNonQueryAsync(); } - catch { } + await Assert.ThrowsAsync(() => cmd.ExecuteNonQueryAsync()); } - }).GetAwaiter().GetResult(); + }).Wait(); return RemoteExecutor.SuccessExitCode; }).Dispose(); } - [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] + [Fact] public void ExecuteReaderAsyncTest() { RemoteExecutor.Invoke(() => { CollectStatisticsDiagnosticsAsync(async connectionString => { - using (SqlConnection conn = new SqlConnection(connectionString)) - using (SqlCommand cmd = new SqlCommand()) + await using (SqlConnection conn = new SqlConnection(connectionString)) + await using (SqlCommand cmd = new SqlCommand()) { cmd.Connection = conn; cmd.CommandText = "SELECT [name], [state] FROM [sys].[databases] WHERE [name] = db_name();"; @@ -349,35 +332,32 @@ public void ExecuteReaderAsyncTest() conn.Open(); SqlDataReader reader = await cmd.ExecuteReaderAsync(); while (reader.Read()) - { } + { + // Read to end + } } - }).GetAwaiter().GetResult(); + }).Wait(); return RemoteExecutor.SuccessExitCode; }).Dispose(); } - [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] + [Fact] public void ExecuteReaderAsyncErrorTest() { RemoteExecutor.Invoke(() => { CollectStatisticsDiagnosticsAsync(async connectionString => { - using (SqlConnection conn = new SqlConnection(connectionString)) - using (SqlCommand cmd = new SqlCommand()) + await using (SqlConnection conn = new SqlConnection(connectionString)) + await using (SqlCommand cmd = new SqlCommand()) { cmd.Connection = conn; - cmd.CommandText = "select 1 / 0;"; + cmd.CommandText = "SELECT 1 / 0;"; - try - { - SqlDataReader reader = await cmd.ExecuteReaderAsync(); - while (reader.Read()) - { } - } - catch { } + conn.Open(); + await Assert.ThrowsAsync(() => cmd.ExecuteReaderAsync()); } - }).GetAwaiter().GetResult(); + }).Wait(); return RemoteExecutor.SuccessExitCode; }).Dispose(); } @@ -386,24 +366,26 @@ public void ExecuteReaderAsyncErrorTest() [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup), nameof(DataTestUtility.IsNotAzureSynapse))] public void ExecuteXmlReaderAsyncTest() { - RemoteExecutor.Invoke(cs => + RemoteExecutor.Invoke(() => { CollectStatisticsDiagnosticsAsync(async _ => { - using (SqlConnection conn = new SqlConnection(cs)) - using (SqlCommand cmd = new SqlCommand()) + await using (SqlConnection conn = new SqlConnection(DataTestUtility.TCPConnectionString)) + await using (SqlCommand cmd = new SqlCommand()) { cmd.Connection = conn; - cmd.CommandText = "select TOP 10 * from sys.objects for xml auto, xmldata;"; + cmd.CommandText = "SELECT TOP 10 * FROM sys.objects FOR xml auto, xmldata;"; conn.Open(); XmlReader reader = await cmd.ExecuteXmlReaderAsync(); while (reader.Read()) - { } + { + // Read to end + } } - }).GetAwaiter().GetResult(); + }).Wait(); return RemoteExecutor.SuccessExitCode; - }, s_tcpConnStr).Dispose(); + }).Dispose(); } [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] @@ -423,16 +405,20 @@ public void ExecuteXmlReaderAsyncErrorTest() { XmlReader reader = await cmd.ExecuteXmlReaderAsync(); while (reader.Read()) - { } + { + } + } + catch + { + Console.WriteLine("Frig."); } - catch { } } - }).GetAwaiter().GetResult(); + }).Wait(); return RemoteExecutor.SuccessExitCode; - }, s_tcpConnStr).Dispose(); + }, DataTestUtility.TCPConnectionString).Dispose(); } - [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] + [Fact] public void ConnectionOpenTest() { RemoteExecutor.Invoke(() => @@ -442,17 +428,13 @@ public void ConnectionOpenTest() using (SqlConnection sqlConnection = new SqlConnection(connectionString)) { sqlConnection.Open(); - Console.WriteLine("SqlClient.DiagnosticsTest.ConnectionOpenTest:: Connection Opened "); } - Console.WriteLine("SqlClient.DiagnosticsTest.ConnectionOpenTest:: Connection Should Be Disposed"); }, true); - - Console.WriteLine("SqlClient.DiagnosticsTest.ConnectionOpenTest:: Done with Diagnostics collection"); return RemoteExecutor.SuccessExitCode; }).Dispose(); } - [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] + [Fact] public void ConnectionOpenErrorTest() { RemoteExecutor.Invoke(() => @@ -461,45 +443,41 @@ public void ConnectionOpenErrorTest() { using (SqlConnection sqlConnection = new SqlConnection(BadConnectionString)) { - try - { sqlConnection.Open(); } - catch { } + Assert.Throws(() => sqlConnection.Open()); } }); return RemoteExecutor.SuccessExitCode; }).Dispose(); } - [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] + [Fact] public void ConnectionOpenAsyncTest() { RemoteExecutor.Invoke(() => { CollectStatisticsDiagnosticsAsync(async connectionString => { - using (SqlConnection sqlConnection = new SqlConnection(connectionString)) + await using (SqlConnection sqlConnection = new SqlConnection(connectionString)) { await sqlConnection.OpenAsync(); } - }).GetAwaiter().GetResult(); + }).Wait(); return RemoteExecutor.SuccessExitCode; }).Dispose(); } - [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] + [Fact] public void ConnectionOpenAsyncErrorTest() { RemoteExecutor.Invoke(() => { CollectStatisticsDiagnosticsAsync(async _ => { - using (SqlConnection sqlConnection = new SqlConnection(BadConnectionString)) + await using (SqlConnection sqlConnection = new SqlConnection(BadConnectionString)) { - try - { await sqlConnection.OpenAsync(); } - catch { } + await Assert.ThrowsAsync(() => sqlConnection.OpenAsync()); } - }).GetAwaiter().GetResult(); + }).Wait(); return RemoteExecutor.SuccessExitCode; }).Dispose(); } From e6895f330e2254fa0d4361f19a90434ecf242407 Mon Sep 17 00:00:00 2001 From: Ben Russell Date: Fri, 1 Mar 2024 13:48:46 -0600 Subject: [PATCH 3/5] Understanding why test was failing --- .../TracingTests/DiagnosticTest.cs | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/TracingTests/DiagnosticTest.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/TracingTests/DiagnosticTest.cs index dbcd0d2e5c..5d5c9d5ec7 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/TracingTests/DiagnosticTest.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/TracingTests/DiagnosticTest.cs @@ -152,6 +152,7 @@ public void ExecuteReaderErrorTest() cmd.CommandText = "SELECT 1 / 0;"; conn.Open(); + // @TODO: TestTdsServer should not throw on ExecuteReader, it should throw on reader.Read Assert.Throws(() => cmd.ExecuteReader()); } }); @@ -225,6 +226,7 @@ public void ExecuteXmlReaderErrorTest() cmd.CommandText = "SELECT *, baddata = 1 / 0 FROM sys.objects FOR xml auto, xmldata;"; conn.Open(); + // @TODO: TestTdsServer should not throw on ExecuteXmlReader, should throw on reader.Read Assert.Throws(() => cmd.ExecuteXmlReader()); } }); @@ -355,6 +357,7 @@ public void ExecuteReaderAsyncErrorTest() cmd.CommandText = "SELECT 1 / 0;"; conn.Open(); + // @TODO: TestTdsServer should not throw on ExecuteReader, should throw on reader.Read await Assert.ThrowsAsync(() => cmd.ExecuteReaderAsync()); } }).Wait(); @@ -366,6 +369,7 @@ public void ExecuteReaderAsyncErrorTest() [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup), nameof(DataTestUtility.IsNotAzureSynapse))] public void ExecuteXmlReaderAsyncTest() { + // @TODO: TestTdsServer does not handle xml reader, so connect to a real server as a workaround RemoteExecutor.Invoke(() => { CollectStatisticsDiagnosticsAsync(async _ => @@ -388,34 +392,31 @@ public void ExecuteXmlReaderAsyncTest() }).Dispose(); } - [ConditionalFact(typeof(DataTestUtility), nameof(DataTestUtility.AreConnStringsSetup))] + [Fact] public void ExecuteXmlReaderAsyncErrorTest() { - RemoteExecutor.Invoke(cs => + // @TODO: TestTdsServer does not handle xml reader, so connect to a real server as a workaround + RemoteExecutor.Invoke(() => { + CollectStatisticsDiagnosticsAsync(async _ => { - using (SqlConnection conn = new SqlConnection(cs)) - using (SqlCommand cmd = new SqlCommand()) + await using (SqlConnection conn = new SqlConnection(DataTestUtility.TCPConnectionString)) + await using (SqlCommand cmd = new SqlCommand()) { cmd.Connection = conn; cmd.CommandText = "select *, baddata = 1 / 0 from sys.objects for xml auto, xmldata;"; - try - { - XmlReader reader = await cmd.ExecuteXmlReaderAsync(); - while (reader.Read()) - { - } - } - catch - { - Console.WriteLine("Frig."); - } + // @TODO: Since this test uses a real database connection, the exception is + // thrown during reader.Read. (ie, TestTdsServer does not obey proper + // exception behavior) + await conn.OpenAsync(); + XmlReader reader = await cmd.ExecuteXmlReaderAsync(); + await Assert.ThrowsAsync(() => reader.ReadAsync()); } }).Wait(); return RemoteExecutor.SuccessExitCode; - }, DataTestUtility.TCPConnectionString).Dispose(); + }).Dispose(); } [Fact] From e8960baeb3a14e87b0265f55e55d9aebc69cc75a Mon Sep 17 00:00:00 2001 From: Ben Russell Date: Thu, 7 Mar 2024 11:58:42 -0600 Subject: [PATCH 4/5] Add arcade and xunit nugets to .net8+ special versions --- tools/props/VersionsNet8OrLater.props | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/props/VersionsNet8OrLater.props b/tools/props/VersionsNet8OrLater.props index a5e1f52bb4..a574fb4f94 100644 --- a/tools/props/VersionsNet8OrLater.props +++ b/tools/props/VersionsNet8OrLater.props @@ -5,5 +5,8 @@ 8.0.0 8.0.0 8.0.0 + 9.0.0-beta.24157.1 + 9.0.0-beta.24157.1 + 2.6.3 From adad96aa5568b631ba520f66f47b9ff0b99d12bd Mon Sep 17 00:00:00 2001 From: Ben Russell Date: Thu, 7 Mar 2024 17:10:49 -0600 Subject: [PATCH 5/5] Remove xunitextensions version boost (which I spelled wrong anyhow) --- tools/props/VersionsNet8OrLater.props | 1 - 1 file changed, 1 deletion(-) diff --git a/tools/props/VersionsNet8OrLater.props b/tools/props/VersionsNet8OrLater.props index a574fb4f94..2c203223bd 100644 --- a/tools/props/VersionsNet8OrLater.props +++ b/tools/props/VersionsNet8OrLater.props @@ -6,7 +6,6 @@ 8.0.0 8.0.0 9.0.0-beta.24157.1 - 9.0.0-beta.24157.1 2.6.3