Skip to content

Commit bd81443

Browse files
authored
Avoid creating meta files outside Assets and Packages (#1489) (#1491)
* fix #1481
1 parent 92aa8b2 commit bd81443

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

resharper/resharper-unity/src/ProjectExtensions.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ namespace JetBrains.ReSharper.Plugins.Unity
88
public static class ProjectExtensions
99
{
1010
public const string AssetsFolder = "Assets";
11+
public const string PackagesFolder = "Packages";
1112
public const string ProjectSettingsFolder = "ProjectSettings";
1213

1314
public static bool HasUnityReference([NotNull] this ISolution solution)

resharper/resharper-unity/src/ProjectModel/MetaFileTracker.cs

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,27 @@ private static bool IsRemovedAsset(ProjectItemChange change)
137137
private static bool ShouldHandleChange(ProjectItemChange change)
138138
{
139139
// String comparisons, treat as expensive if we're doing this very frequently
140-
return !IsItemMetaFile(change);
140+
return IsAssetOrPackage(change) && !IsItemMetaFile(change);
141+
}
142+
143+
private static bool IsAssetOrPackage(ProjectItemChange change)
144+
{
145+
var rootFolder = GetRootFolder(change.OldParentFolder);
146+
if (rootFolder == null)
147+
return false;
148+
if (string.Compare(rootFolder.Name, ProjectExtensions.AssetsFolder, StringComparison.OrdinalIgnoreCase) == 0)
149+
return true;
150+
if (string.Compare(rootFolder.Name, ProjectExtensions.PackagesFolder, StringComparison.OrdinalIgnoreCase) == 0)
151+
return true;
152+
var project = change.ProjectItem.GetProject();
153+
return project != null && project.HasSubItems(rootFolder.Name);
154+
}
155+
156+
private static IProjectFolder GetRootFolder(IProjectItem item)
157+
{
158+
while (item?.ParentFolder != null && item.ParentFolder.Kind != ProjectItemKind.PROJECT)
159+
item = item.ParentFolder;
160+
return item as IProjectFolder;
141161
}
142162

143163
private static bool IsItemMetaFile(ProjectItemChange change)

0 commit comments

Comments
 (0)