diff --git a/src/Cli/Microsoft.DotNet.Cli.Utils/EnvironmentProvider.cs b/src/Cli/Microsoft.DotNet.Cli.Utils/EnvironmentProvider.cs index 06c64b67110a..4048868bb7a1 100644 --- a/src/Cli/Microsoft.DotNet.Cli.Utils/EnvironmentProvider.cs +++ b/src/Cli/Microsoft.DotNet.Cli.Utils/EnvironmentProvider.cs @@ -39,7 +39,7 @@ private IEnumerable SearchPaths { if (_searchPaths == null) { - var searchPaths = new List { AppContext.BaseDirectory }; + var searchPaths = new List { SdkPaths.SdkDirectory }; searchPaths.AddRange(Environment .GetEnvironmentVariable("PATH")? diff --git a/test/dotnet-aot.Tests/EnvironmentProviderTests.cs b/test/dotnet-aot.Tests/EnvironmentProviderTests.cs new file mode 100644 index 000000000000..ed14164d7b29 --- /dev/null +++ b/test/dotnet-aot.Tests/EnvironmentProviderTests.cs @@ -0,0 +1,33 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using Microsoft.DotNet.Cli.Utils; + +namespace Microsoft.DotNet.Cli.Tests; + +[TestClass] +public class EnvironmentProviderTests +{ + [TestMethod] + public void CommandSearchStartsInVersionedSdkDirectory() + { + string sdkDirectory = Path.Combine(Path.GetTempPath(), "dotnet", "sdk", $"test-version-{Guid.NewGuid():N}"); + string commandName = $"sdk-command-{Guid.NewGuid():N}"; + string commandPath = Path.Combine(sdkDirectory, commandName); + Directory.CreateDirectory(sdkDirectory); + File.WriteAllText(commandPath, string.Empty); + + try + { + using var _ = new SdkDirectoryScope(sdkDirectory); + + Assert.AreEqual( + commandPath, + new EnvironmentProvider().GetCommandPath(commandName, string.Empty)); + } + finally + { + Directory.Delete(sdkDirectory, recursive: true); + } + } +}