Browse Source

reorder solution configurations + migration

Ivan Shakhov 5 years ago
parent
commit
ce01b83c4a

+ 22 - 0
modules/mono/editor/GodotTools/GodotTools.ProjectEditor/DotNetSolution.cs

@@ -1,6 +1,8 @@
 using GodotTools.Core;
 using System.Collections.Generic;
 using System.IO;
+using System.Linq;
+using System.Text.RegularExpressions;
 
 namespace GodotTools.ProjectEditor
 {
@@ -118,5 +120,25 @@ EndProject";
         const string ProjectPlatformsConfig =
 @"		{{{0}}}.{1}|Any CPU.ActiveCfg = {1}|Any CPU
 		{{{0}}}.{1}|Any CPU.Build.0 = {1}|Any CPU";
+
+        public static void FixConfigurations(string slnPath)
+        {
+            if (!File.Exists(slnPath))
+                return;
+            
+            var input = File.ReadAllText(slnPath);
+            var dict = new Dictionary<string, string>
+            {
+                {"Debug|Any CPU", "Tools|Any CPU"},
+                {"Release|Any CPU", "ExportDebug|Any CPU"},
+                {"Tools|Any CPU", "ExportRelease|Any CPU"}
+            };
+
+            var regex = new Regex(string.Join("|",dict.Keys.Select(Regex.Escape)));
+            var result = regex.Replace(input,m => dict[m.Value]);
+
+            if (result != input)
+                File.WriteAllText(slnPath, result);
+        }
     }
 }

+ 0 - 12
modules/mono/editor/GodotTools/GodotTools/CsProjOperations.cs

@@ -32,18 +32,6 @@ namespace GodotTools
             ProjectUtils.AddItemToProjectChecked(projectPath, itemType, include);
         }
 
-        public static void FixApiHintPath(string projectPath)
-        {
-            try
-            {
-                ProjectUtils.FixApiHintPath(projectPath);
-            }
-            catch (Exception e)
-            {
-                GD.PushError(e.ToString());
-            }
-        }
-
         private static readonly DateTime Epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
 
         private static ulong ConvertToTimestamp(this DateTime value)

+ 12 - 3
modules/mono/editor/GodotTools/GodotTools/GodotSharpEditor.cs

@@ -61,7 +61,7 @@ namespace GodotTools
                     {
                         Guid = guid,
                         PathRelativeToSolution = name + ".csproj",
-                        Configs = new List<string> { "Debug", "Release", "Tools" }
+                        Configs = new List<string> { "Tools", "ExportDebug", "ExportRelease" }
                     };
 
                     solution.AddNewProject(name, projectInfo);
@@ -401,8 +401,17 @@ namespace GodotTools
 
             if (File.Exists(GodotSharpDirs.ProjectSlnPath) && File.Exists(GodotSharpDirs.ProjectCsProjPath))
             {
-                // Make sure the existing project has Api assembly references configured correctly
-                CsProjOperations.FixApiHintPath(GodotSharpDirs.ProjectCsProjPath);
+                try
+                {
+                    // Make sure the existing project has Api assembly references configured correctly
+                    ProjectUtils.FixApiHintPath(GodotSharpDirs.ProjectCsProjPath);
+                    // Make sure SolutionConfigurations are Tool, ExportDebug and ExportRelease
+                    DotNetSolution.FixConfigurations(GodotSharpDirs.ProjectSlnPath);
+                }
+                catch (Exception e)
+                {
+                    GD.PushError(e.ToString());
+                }
             }
             else
             {