Browse Source

Merge pull request #57609 from Densorius/master

Add Visual Studio 2022 support with fallback to 2019
Ignacio Roldán Etcheverry 3 years ago
parent
commit
c24fc415dc

+ 21 - 2
modules/mono/editor/GodotTools/GodotTools.OpenVisualStudio/Program.cs

@@ -47,9 +47,13 @@ namespace GodotTools.OpenVisualStudio
             if (dte == null)
             if (dte == null)
             {
             {
                 // Open a new instance
                 // Open a new instance
+                dte = TryVisualStudioLaunch("VisualStudio.DTE.17.0");
 
 
-                var visualStudioDteType = Type.GetTypeFromProgID("VisualStudio.DTE.16.0", throwOnError: true);
-                dte = (DTE)Activator.CreateInstance(visualStudioDteType);
+                if (dte == null)
+                {
+                    // Launch of VS 2022 failed, fallback to 2019
+                    dte = TryVisualStudioLaunch("VisualStudio.DTE.16.0");
+                }
 
 
                 dte.UserControl = true;
                 dte.UserControl = true;
 
 
@@ -133,6 +137,21 @@ namespace GodotTools.OpenVisualStudio
             return 0;
             return 0;
         }
         }
 
 
+        private static DTE TryVisualStudioLaunch(string version)
+        {
+            try
+            {
+                var visualStudioDteType = Type.GetTypeFromProgID(version, throwOnError: true);
+                var dte = (DTE)Activator.CreateInstance(visualStudioDteType);
+
+                return dte;
+            }
+            catch (COMException)
+            {
+                return null;
+            }
+        }
+
         private static DTE FindInstanceEditingSolution(string solutionPath)
         private static DTE FindInstanceEditingSolution(string solutionPath)
         {
         {
             if (GetRunningObjectTable(0, out IRunningObjectTable pprot) != 0)
             if (GetRunningObjectTable(0, out IRunningObjectTable pprot) != 0)