Merge pull request #83325 from raulsntos/dotnet/find-latest-sdk

C#: Fallback to the latest SDK
This commit is contained in:
Rémi Verschelde 2023-10-24 10:54:04 +02:00
commit 398b254f27
No known key found for this signature in database
GPG key ID: C3336907360768E1
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}");
}