C#: Fallback to the latest SDK

This commit is contained in:
Raul Santos 2023-10-14 14:07:45 +02:00
parent a574c0296b
commit a186343abd
No known key found for this signature in database
GPG key ID: B532473AE3A803E4
2 changed files with 10 additions and 5 deletions

View file

@ -1,5 +1,7 @@
using System;
using System.Linq;
using Microsoft.Build.Construction;
using Microsoft.Build.Locator;
namespace GodotTools.ProjectEditor
{
@ -19,15 +21,18 @@ namespace GodotTools.ProjectEditor
public static class ProjectUtils
{
public static void MSBuildLocatorRegisterDefaults(out Version version, out string path)
public static void MSBuildLocatorRegisterLatest(out Version version, out string path)
{
var instance = Microsoft.Build.Locator.MSBuildLocator.RegisterDefaults();
var instance = MSBuildLocator.QueryVisualStudioInstances()
.OrderByDescending(x => x.Version)
.First();
MSBuildLocator.RegisterInstance(instance);
version = instance.Version;
path = instance.MSBuildPath;
}
public static void MSBuildLocatorRegisterMSBuildPath(string msbuildPath)
=> Microsoft.Build.Locator.MSBuildLocator.RegisterMSBuildPath(msbuildPath);
=> MSBuildLocator.RegisterMSBuildPath(msbuildPath);
public static MSBuildProject Open(string path)
{

View file

@ -456,7 +456,7 @@ namespace GodotTools
var dotNetSdkSearchVersion = Environment.Version;
// First we try to find the .NET Sdk ourselves to make sure we get the
// correct version first (`RegisterDefaults` always picks the latest).
// correct version first, otherwise pick the latest.
if (DotNetFinder.TryFindDotNetSdk(dotNetSdkSearchVersion, out var sdkVersion, out string sdkPath))
{
if (Godot.OS.IsStdOutVerbose())
@ -468,7 +468,7 @@ namespace GodotTools
{
try
{
ProjectUtils.MSBuildLocatorRegisterDefaults(out sdkVersion, out sdkPath);
ProjectUtils.MSBuildLocatorRegisterLatest(out sdkVersion, out sdkPath);
if (Godot.OS.IsStdOutVerbose())
Console.WriteLine($"Found .NET Sdk version '{sdkVersion}': {sdkPath}");
}