public void RespectsSearchPath() { var environmentSearchPath = SearchPathSearcher.ResolveSearchPath(Environment.GetEnvironmentVariable("PATH")); var dotnetPath = SearchPathSearcher.FindExecutable(TestUtil.DotnetCommandName, false, environmentSearchPath); Assert.NotNull(dotnetPath); var searchPath = new[] { Path.GetDirectoryName(dotnetPath) ! };
private static string ResolveExecutablePath(string fileName, ChildProcessFlags flags) { bool ignoreSearchPath = flags.HasIgnoreSearchPath(); var searchPath = ignoreSearchPath ? null : EnvironmentSearchPathCache.ResolveSearchPath(); var resolvedPath = SearchPathSearcher.FindExecutable(fileName, flags.HasAllowRelativeFileName(), searchPath); if (resolvedPath is null) { ThrowHelper.ThrowExecutableNotFoundException(fileName, flags); } return(resolvedPath); }
public static IReadOnlyList <string> ResolveSearchPath() { var envStr = Environment.GetEnvironmentVariable("PATH"); lock (Lock) { if (envStr == _previousEnvStr) { return(_cachedSearchPath); } else { var searchPath = SearchPathSearcher.ResolveSearchPath(envStr); _previousEnvStr = envStr; _cachedSearchPath = searchPath; return(searchPath); } } }