diff options
author | Ignacio Roldán Etcheverry <neikeq@users.noreply.github.com> | 2022-02-04 03:47:11 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-04 03:47:11 +0100 |
commit | c24fc415dc703c65cf6b556dca90adb50915e7dc (patch) | |
tree | fae2235ea0ed4430ee4d3a5f29761baa31662e21 | |
parent | cfa2bfca4eb03dbbdf8bd107db01aeac8cf646a1 (diff) | |
parent | 9ea0508d35fa747b81b327e41969f926633d768f (diff) |
Merge pull request #57609 from Densorius/master
Add Visual Studio 2022 support with fallback to 2019
-rw-r--r-- | modules/mono/editor/GodotTools/GodotTools.OpenVisualStudio/Program.cs | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/modules/mono/editor/GodotTools/GodotTools.OpenVisualStudio/Program.cs b/modules/mono/editor/GodotTools/GodotTools.OpenVisualStudio/Program.cs index ce2b378623..f29b339c0e 100644 --- a/modules/mono/editor/GodotTools/GodotTools.OpenVisualStudio/Program.cs +++ b/modules/mono/editor/GodotTools/GodotTools.OpenVisualStudio/Program.cs @@ -47,9 +47,13 @@ namespace GodotTools.OpenVisualStudio if (dte == null) { // 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; @@ -133,6 +137,21 @@ namespace GodotTools.OpenVisualStudio 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) { if (GetRunningObjectTable(0, out IRunningObjectTable pprot) != 0) |