浏览代码

C#: Fallback to the latest SDK

Raul Santos 1 年之前
父节点
当前提交
a186343abd

+ 8 - 3
modules/mono/editor/GodotTools/GodotTools.ProjectEditor/ProjectUtils.cs

@@ -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)
         {

+ 2 - 2
modules/mono/editor/GodotTools/GodotTools/GodotSharpEditor.cs

@@ -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}");
                 }