diff --git a/src/libraries/Microsoft.Extensions.DependencyModel/src/DependencyContextPaths.cs b/src/libraries/Microsoft.Extensions.DependencyModel/src/DependencyContextPaths.cs index 4d056a25bd76c0..b5c6730eef3eec 100644 --- a/src/libraries/Microsoft.Extensions.DependencyModel/src/DependencyContextPaths.cs +++ b/src/libraries/Microsoft.Extensions.DependencyModel/src/DependencyContextPaths.cs @@ -20,8 +20,6 @@ internal sealed class DependencyContextPaths public IEnumerable NonApplicationPaths { get; } - private static readonly char[] s_semicolon = new[] { ';' }; - public DependencyContextPaths( string? application, string? sharedRuntime, @@ -42,7 +40,13 @@ private static DependencyContextPaths GetCurrent() internal static DependencyContextPaths Create(string? depsFiles, string? sharedRuntime) { - string[]? files = depsFiles?.Split(s_semicolon, StringSplitOptions.RemoveEmptyEntries); +#if NETCOREAPP + const char separator = ';'; +#else + // This method is only executed once at startup. No need to cache the char[]. + char[] separator = { ';' }; +#endif + string[]? files = depsFiles?.Split(separator, StringSplitOptions.RemoveEmptyEntries); string? application = files != null && files.Length > 0 ? files[0] : null; string[]? nonApplicationPaths = files? diff --git a/src/libraries/Microsoft.Extensions.DependencyModel/tests/DependencyContextTests.cs b/src/libraries/Microsoft.Extensions.DependencyModel/tests/DependencyContextTests.cs index 0c570d6a441f25..f657aead2a5780 100644 --- a/src/libraries/Microsoft.Extensions.DependencyModel/tests/DependencyContextTests.cs +++ b/src/libraries/Microsoft.Extensions.DependencyModel/tests/DependencyContextTests.cs @@ -276,6 +276,19 @@ public void MergeMergesRuntimeGraph() Subject.Fallbacks.Should().BeEquivalentTo("win7-x64", "win7-x86"); } + [Fact] + [SkipOnTargetFramework(TargetFrameworkMonikers.NetFramework, "GetEntryAssembly() returns null")] + public void DefaultWorksCorrectly() + { + // only need to assert the context contains non-null properties. + + var context = DependencyContext.Default; + Assert.NotNull(context); + Assert.NotNull(context.RuntimeGraph); + Assert.NotNull(context.RuntimeLibraries); + Assert.NotNull(context.Target); + } + private TargetInfo CreateTargetInfo() { return new TargetInfo(