diff --git a/src/libraries/System.IO.FileSystem/tests/Net5CompatTests/Net5CompatSwitchTests.cs b/src/libraries/System.IO.FileSystem/tests/Net5CompatTests/Net5CompatSwitchTests.cs index 24f9026b54dfff..bb2d05086cf0ad 100644 --- a/src/libraries/System.IO.FileSystem/tests/Net5CompatTests/Net5CompatSwitchTests.cs +++ b/src/libraries/System.IO.FileSystem/tests/Net5CompatTests/Net5CompatSwitchTests.cs @@ -20,7 +20,7 @@ public static void LegacySwitchIsHonored() .GetField("_strategy", BindingFlags.NonPublic | BindingFlags.Instance) .GetValue(fileStream); - Assert.Contains("Net5Compat", strategy.GetType().FullName); + Assert.DoesNotContain("Net5Compat", strategy.GetType().FullName); } File.Delete(filePath); diff --git a/src/libraries/System.IO.FileSystem/tests/Net5CompatTests/runtimeconfig.template.json b/src/libraries/System.IO.FileSystem/tests/Net5CompatTests/runtimeconfig.template.json index 6e843517fe47af..0c1a3482aba4f8 100644 --- a/src/libraries/System.IO.FileSystem/tests/Net5CompatTests/runtimeconfig.template.json +++ b/src/libraries/System.IO.FileSystem/tests/Net5CompatTests/runtimeconfig.template.json @@ -1,5 +1,5 @@ { "configProperties": { - "System.IO.UseNet5CompatFileStream": true + "System.IO.UseNet5CompatFileStream": false } } diff --git a/src/libraries/System.IO/tests/Net5CompatTests/runtimeconfig.template.json b/src/libraries/System.IO/tests/Net5CompatTests/runtimeconfig.template.json index 6e843517fe47af..0c1a3482aba4f8 100644 --- a/src/libraries/System.IO/tests/Net5CompatTests/runtimeconfig.template.json +++ b/src/libraries/System.IO/tests/Net5CompatTests/runtimeconfig.template.json @@ -1,5 +1,5 @@ { "configProperties": { - "System.IO.UseNet5CompatFileStream": true + "System.IO.UseNet5CompatFileStream": false } } diff --git a/src/libraries/System.Private.CoreLib/src/System/IO/Strategies/FileStreamHelpers.cs b/src/libraries/System.Private.CoreLib/src/System/IO/Strategies/FileStreamHelpers.cs index 1ca2e563998caa..e2b8d4ec3343cf 100644 --- a/src/libraries/System.Private.CoreLib/src/System/IO/Strategies/FileStreamHelpers.cs +++ b/src/libraries/System.Private.CoreLib/src/System/IO/Strategies/FileStreamHelpers.cs @@ -7,7 +7,21 @@ namespace System.IO.Strategies { internal static partial class FileStreamHelpers { - internal static bool UseNet5CompatStrategy { get; } = AppContextConfigHelper.GetBooleanConfig("System.IO.UseNet5CompatFileStream", "DOTNET_SYSTEM_IO_USENET5COMPATFILESTREAM"); + // It's enabled by default. We are going to change that once we fix #51141. + internal static bool UseNet5CompatStrategy { get; } = GetNet5CompatFileStreamSetting(); + + private static bool GetNet5CompatFileStreamSetting() + { + if (AppContext.TryGetSwitch("System.IO.UseNet5CompatFileStream", out bool fileConfig)) + { + return fileConfig; + } + + string? envVar = Environment.GetEnvironmentVariable("DOTNET_SYSTEM_IO_USENET5COMPATFILESTREAM"); + return envVar is null + ? true // Net5Compat is currently enabled by default; + : bool.IsTrueStringIgnoreCase(envVar) || envVar.Equals("1"); + } internal static FileStreamStrategy ChooseStrategy(FileStream fileStream, SafeFileHandle handle, FileAccess access, FileShare share, int bufferSize, bool isAsync) => WrapIfDerivedType(fileStream, ChooseStrategyCore(handle, access, share, bufferSize, isAsync));