diff --git a/src/MSBuildLocator/MSBuildLocator.cs b/src/MSBuildLocator/MSBuildLocator.cs index 87be1e8c..d820fde6 100644 --- a/src/MSBuildLocator/MSBuildLocator.cs +++ b/src/MSBuildLocator/MSBuildLocator.cs @@ -314,16 +314,23 @@ private static void ApplyDotNetSdkEnvironmentVariables(string dotNetSdkPath) const string MSBuildExtensionsPath = nameof(MSBuildExtensionsPath); const string MSBuildSDKsPath = nameof(MSBuildSDKsPath); - var variables = new Dictionary - { - [MSBUILD_EXE_PATH] = dotNetSdkPath + "MSBuild.dll", - [MSBuildExtensionsPath] = dotNetSdkPath, - [MSBuildSDKsPath] = dotNetSdkPath + "Sdks" - }; - - foreach (var kvp in variables) - { - Environment.SetEnvironmentVariable(kvp.Key, kvp.Value); + AddEnvFileVar(MSBUILD_EXE_PATH, Path.Combine(dotNetSdkPath, "MSBuild.dll")); + AddEnvDirVar(MSBuildExtensionsPath, dotNetSdkPath); + AddEnvDirVar(MSBuildSDKsPath, Path.Combine(dotNetSdkPath, "Sdks")); + + void AddEnvDirVar(string name, string value) + { + if (Directory.Exists(value)) + { + Environment.SetEnvironmentVariable(name, value); + } + } + void AddEnvFileVar(string name, string value) + { + if (File.Exists(value)) + { + Environment.SetEnvironmentVariable(name, value); + } } }