From 259075c83ae19b874c5d829cfdd98449f6f73880 Mon Sep 17 00:00:00 2001 From: nakano yosuke Date: Tue, 14 Apr 2020 01:31:34 +0900 Subject: [PATCH] SyncSolution --- .idea/.idea.AsmdefHelper/.idea/workspace.xml | 5 +- .../Editor/SyncSolutionUtilities.cs | 127 +++++++----------- 2 files changed, 50 insertions(+), 82 deletions(-) diff --git a/.idea/.idea.AsmdefHelper/.idea/workspace.xml b/.idea/.idea.AsmdefHelper/.idea/workspace.xml index e243585..99badee 100644 --- a/.idea/.idea.AsmdefHelper/.idea/workspace.xml +++ b/.idea/.idea.AsmdefHelper/.idea/workspace.xml @@ -2,9 +2,8 @@ - - + diff --git a/Assets/AsmdefHelper/SyncSolution/Editor/SyncSolutionUtilities.cs b/Assets/AsmdefHelper/SyncSolution/Editor/SyncSolutionUtilities.cs index 52b7136..15faa95 100644 --- a/Assets/AsmdefHelper/SyncSolution/Editor/SyncSolutionUtilities.cs +++ b/Assets/AsmdefHelper/SyncSolution/Editor/SyncSolutionUtilities.cs @@ -1,93 +1,62 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.IO; using System.Linq; -using System.Reflection; using UnityEditor; +using UnityEditor.VisualStudioIntegration; using UnityEngine; -//https://forum.unity.com/threads/solved-unity-not-generating-sln-file-from-assets-open-c-project.538487/ -namespace EditorUtilities.Solution -{ - public static class SyncSolutionUtilities - { - private static Type _syncVSType; - private static MethodInfo _syncSolutionMethodInfo; +// https://forum.unity.com/threads/solved-unity-not-generating-sln-file-from-assets-open-c-project.538487/ +// Thank you Flexford! +namespace AsmdeffHelper.SyncSolution { + public static class SyncSolutionUtilities { + static SolutionSynchronizer synchronizer; - private static FieldInfo _synchronizerField; - private static object _synchronizerObject; - private static Type _synchronizerType; - private static MethodInfo _synchronizerSyncMethodInfo; + static SyncSolutionUtilities() { + synchronizer = SyncVS.Synchronizer; + } - static SyncSolutionUtilities() - { - _syncVSType = Type.GetType("UnityEditor.SyncVS,UnityEditor"); - _synchronizerField = _syncVSType.GetField("Synchronizer", BindingFlags.NonPublic | BindingFlags.Static); - _syncSolutionMethodInfo = _syncVSType.GetMethod("SyncSolution", BindingFlags.Public | BindingFlags.Static); + [MenuItem("Window/Asmdef Helper/Sync C# Solution", priority = 1000000)] + public static void Sync() { + Sync(true); + } - _synchronizerObject = _synchronizerField.GetValue(_syncVSType); - _synchronizerType = _synchronizerObject.GetType(); - _synchronizerSyncMethodInfo = _synchronizerType.GetMethod("Sync", BindingFlags.Public | BindingFlags.Instance); - } + static void Sync(bool logsEnabled) { + CleanOldFiles(logsEnabled); + Call_SyncSolution(logsEnabled); + Call_SynchronizerSync(logsEnabled); + } - [MenuItem("Assets/Sync C# Solution", priority = 1000000)] - public static void Sync() - { - Sync(true); - } + static void CleanOldFiles(bool logsEnabled) { + var assetsDirectoryInfo = new DirectoryInfo(Application.dataPath); + var projectDirectoryInfo = assetsDirectoryInfo.Parent; - public static void Sync(bool logsEnabled) - { - CleanOldFiles(logsEnabled); - Call_SyncSolution(logsEnabled); - Call_SynchronizerSync(logsEnabled); - } + var files = GetFilesByExtensions(projectDirectoryInfo, "*.sln", "*.csproj"); + foreach (var file in files) { + if (logsEnabled) { + Debug.Log($"Remove old solution file: {file.Name}"); + } + file.Delete(); + } + } - private static void CleanOldFiles(bool logsEnabled) - { - DirectoryInfo assetsDirectoryInfo = new DirectoryInfo(Application.dataPath); - DirectoryInfo projectDirectoryInfo = assetsDirectoryInfo.Parent; + static void Call_SyncSolution(bool logsEnabled) { + if (logsEnabled) { + Debug.Log($"Coll method: SyncVS.Sync()"); + } + SyncVS.SyncSolution(); + } - IEnumerable files = GetFilesByExtensions(projectDirectoryInfo, "*.sln", "*.csproj"); - foreach(FileInfo file in files) - { - if(logsEnabled) - { - Debug.Log($"Remove old solution file: {file.Name}"); - } - file.Delete(); - } - } + static void Call_SynchronizerSync(bool logsEnabled) { + if (logsEnabled) { + Debug.Log($"Coll method: SyncVS.Synchronizer.Sync()"); + } + synchronizer?.Sync(); + } - private static void Call_SyncSolution(bool logsEnabled) - { - if(logsEnabled) - { - Debug.Log($"Coll method: SyncVS.Sync()"); - } - - _syncSolutionMethodInfo.Invoke(null, null); - } - - private static void Call_SynchronizerSync(bool logsEnabled) - { - if(logsEnabled) - { - Debug.Log($"Coll method: SyncVS.Synchronizer.Sync()"); - } - - _synchronizerSyncMethodInfo.Invoke(_synchronizerObject, null); - } - - private static IEnumerable GetFilesByExtensions(DirectoryInfo dir, params string[] extensions) - { - extensions = extensions ?? new []{"*"}; - IEnumerable files = Enumerable.Empty(); - foreach(string ext in extensions) - { - files = files.Concat(dir.GetFiles(ext)); - } - return files; - } - } + static IEnumerable GetFilesByExtensions(DirectoryInfo dir, params string[] extensions) { + extensions = extensions ?? new[] { "*" }; + var files = Enumerable.Empty(); + return extensions.Aggregate(files, (current, ext) => current.Concat(dir.GetFiles(ext))); + } + } }