浏览代码

Avoid modifying csproj globbing includes on remove

Check if the found globbing include already matches the given path on
removing scripts to avoid modifying users' csproj files.

(cherry picked from commit 3086d7c035a102cf1e33f0ce62bf2b9942b5cb4f)
Raul Santos 3 年之前
父节点
当前提交
3a16557642
共有 1 个文件被更改,包括 16 次插入2 次删除
  1. 16 2
      modules/mono/editor/GodotTools/GodotTools.ProjectEditor/ProjectUtils.cs

+ 16 - 2
modules/mono/editor/GodotTools/GodotTools.ProjectEditor/ProjectUtils.cs

@@ -108,8 +108,22 @@ namespace GodotTools.ProjectEditor
 
             var normalizedInclude = include.NormalizePath();
 
-            if (root.RemoveItemChecked(itemType, normalizedInclude))
-                root.Save();
+            var item = root.FindItemOrNullAbs(itemType, normalizedInclude);
+
+            // Couldn't find an existing item that matches to remove
+            if (item == null)
+                return;
+
+            var glob = MSBuildGlob.Parse(item.Include);
+
+            // If the item include uses globbing don't remove it
+            if (!string.IsNullOrEmpty(glob.WildcardDirectoryPart) || glob.FilenamePart.Contains("*"))
+            {
+                return;
+            }
+
+            item.Parent.RemoveChild(item);
+            root.Save();
         }
 
         public static void RenameItemsToNewFolderInProjectChecked(string projectPath, string itemType, string oldFolder, string newFolder)