Mono: Improve MSBuildFinder logic on Windows

Support detecting both 32-bit and 64-bit installations of `vswhere.exe`.

(cherry picked from commit 5dc3900727)
This commit is contained in:
Thaina Yu 2020-08-19 23:20:53 +07:00 committed by Rémi Verschelde
parent 2e1e1af1d2
commit cadd39d415
No known key found for this signature in database
GPG key ID: C3336907360768E1

View file

@ -161,8 +161,21 @@ namespace GodotTools.Build
// Try to find 15.0 with vswhere
string vsWherePath = Environment.GetEnvironmentVariable(Internal.GodotIs32Bits() ? "ProgramFiles" : "ProgramFiles(x86)");
vsWherePath += "\\Microsoft Visual Studio\\Installer\\vswhere.exe";
var envNames = Internal.GodotIs32Bits() ? new[] { "ProgramFiles", "ProgramW6432" } : new[] { "ProgramFiles(x86)", "ProgramFiles" };
string vsWherePath = null;
foreach (var envName in envNames)
{
vsWherePath = Environment.GetEnvironmentVariable(envName);
if (!string.IsNullOrEmpty(vsWherePath))
{
vsWherePath += "\\Microsoft Visual Studio\\Installer\\vswhere.exe";
if (File.Exists(vsWherePath))
break;
}
vsWherePath = null;
}
var vsWhereArgs = new[] { "-latest", "-products", "*", "-requires", "Microsoft.Component.MSBuild" };