Ejemplo n.º 1
0
        private static void SetMsBuildExePath()
        {
            try
            {
                // See https://github.com/Microsoft/msbuild/issues/2532#issuecomment-381096259

                var process = Process.Start(new ProcessStartInfo("dotnet", "--list-sdks")
                {
                    UseShellExecute = false, RedirectStandardOutput = true
                });
                process.WaitForExit(1000);

                var output   = process.StandardOutput.ReadToEnd();
                var sdkPaths = Regex.Matches(output, "([0-9]+.[0-9]+.[0-9]+) \\[(.*)\\]").OfType <Match>()
                               .Select(m => Path.Combine(m.Groups[2].Value, m.Groups[1].Value, "MSBuild.dll"));

                var sdkPath = sdkPaths.LastOrDefault() ?? Path.Combine(ProjectExtensions.GetToolsPath(), "msbuild.exe");
                Environment.SetEnvironmentVariable("MSBUILD_EXE_PATH", sdkPath);
            }
            catch (Exception exception)
            {
                ConsoleUtilities.Write("Could not set MSBUILD_EXE_PATH: " + exception + "\n\n");
            }
        }