diff --git a/.idea/.idea.AsmdefHelper/.idea/contentModel.xml b/.idea/.idea.AsmdefHelper/.idea/contentModel.xml index 6f87b2f..8e75e83 100644 --- a/.idea/.idea.AsmdefHelper/.idea/contentModel.xml +++ b/.idea/.idea.AsmdefHelper/.idea/contentModel.xml @@ -10,7 +10,6 @@ - @@ -44,12 +43,15 @@ + + + + + + - - - diff --git a/.idea/.idea.AsmdefHelper/.idea/workspace.xml b/.idea/.idea.AsmdefHelper/.idea/workspace.xml index 186d681..e243585 100644 --- a/.idea/.idea.AsmdefHelper/.idea/workspace.xml +++ b/.idea/.idea.AsmdefHelper/.idea/workspace.xml @@ -2,9 +2,9 @@ - - - + + + + + + + + + @@ -72,6 +82,7 @@ + diff --git a/Assets/AsmdefHelper/SyncSolution.meta b/Assets/AsmdefHelper/SyncSolution.meta new file mode 100644 index 0000000..3919f83 --- /dev/null +++ b/Assets/AsmdefHelper/SyncSolution.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3343c43624a31f447a1961156a2cac6e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AsmdefHelper/SyncSolution/Editor.meta b/Assets/AsmdefHelper/SyncSolution/Editor.meta new file mode 100644 index 0000000..4d4a92a --- /dev/null +++ b/Assets/AsmdefHelper/SyncSolution/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 07e92c78d576a8a458ce4a298eeb512d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AsmdefHelper/SyncSolution/Editor/AsmdefHelper.SyncSolution.Editor.asmref b/Assets/AsmdefHelper/SyncSolution/Editor/AsmdefHelper.SyncSolution.Editor.asmref new file mode 100644 index 0000000..0a12953 --- /dev/null +++ b/Assets/AsmdefHelper/SyncSolution/Editor/AsmdefHelper.SyncSolution.Editor.asmref @@ -0,0 +1,3 @@ +{ + "reference": "GUID:211243abc45174c45b3a6c275ea126b9" +} \ No newline at end of file diff --git a/Assets/AsmdefHelper/SyncSolution/Editor/AsmdefHelper.SyncSolution.Editor.asmref.meta b/Assets/AsmdefHelper/SyncSolution/Editor/AsmdefHelper.SyncSolution.Editor.asmref.meta new file mode 100644 index 0000000..fee193c --- /dev/null +++ b/Assets/AsmdefHelper/SyncSolution/Editor/AsmdefHelper.SyncSolution.Editor.asmref.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 353d4308cc0c6c945a085f59650f2b11 +AssemblyDefinitionReferenceImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AsmdefHelper/SyncSolution/Editor/SyncSolutionUtilities.cs b/Assets/AsmdefHelper/SyncSolution/Editor/SyncSolutionUtilities.cs new file mode 100644 index 0000000..52b7136 --- /dev/null +++ b/Assets/AsmdefHelper/SyncSolution/Editor/SyncSolutionUtilities.cs @@ -0,0 +1,93 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using UnityEditor; +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; + + private static FieldInfo _synchronizerField; + private static object _synchronizerObject; + private static Type _synchronizerType; + private static MethodInfo _synchronizerSyncMethodInfo; + + static SyncSolutionUtilities() + { + _syncVSType = Type.GetType("UnityEditor.SyncVS,UnityEditor"); + _synchronizerField = _syncVSType.GetField("Synchronizer", BindingFlags.NonPublic | BindingFlags.Static); + _syncSolutionMethodInfo = _syncVSType.GetMethod("SyncSolution", BindingFlags.Public | BindingFlags.Static); + + _synchronizerObject = _synchronizerField.GetValue(_syncVSType); + _synchronizerType = _synchronizerObject.GetType(); + _synchronizerSyncMethodInfo = _synchronizerType.GetMethod("Sync", BindingFlags.Public | BindingFlags.Instance); + } + + [MenuItem("Assets/Sync C# Solution", priority = 1000000)] + public static void Sync() + { + Sync(true); + } + + public static void Sync(bool logsEnabled) + { + CleanOldFiles(logsEnabled); + Call_SyncSolution(logsEnabled); + Call_SynchronizerSync(logsEnabled); + } + + private static void CleanOldFiles(bool logsEnabled) + { + DirectoryInfo assetsDirectoryInfo = new DirectoryInfo(Application.dataPath); + DirectoryInfo projectDirectoryInfo = assetsDirectoryInfo.Parent; + + IEnumerable files = GetFilesByExtensions(projectDirectoryInfo, "*.sln", "*.csproj"); + foreach(FileInfo file in files) + { + if(logsEnabled) + { + Debug.Log($"Remove old solution file: {file.Name}"); + } + file.Delete(); + } + } + + 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; + } + } +} diff --git a/Assets/AsmdefHelper/SyncSolution/Editor/SyncSolutionUtilities.cs.meta b/Assets/AsmdefHelper/SyncSolution/Editor/SyncSolutionUtilities.cs.meta new file mode 100644 index 0000000..fa31055 --- /dev/null +++ b/Assets/AsmdefHelper/SyncSolution/Editor/SyncSolutionUtilities.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e5785f4c5d9ed634799d54e96aabf408 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/AsmdefHelper/Unity.InternalAPIEditorBridgeDev.001/Unity.InternalAPIEditorBridgeDev.001.asmdef b/Assets/AsmdefHelper/Unity.InternalAPIEditorBridgeDev.001/Unity.InternalAPIEditorBridgeDev.001.asmdef index b44d9b9..e375a8d 100644 --- a/Assets/AsmdefHelper/Unity.InternalAPIEditorBridgeDev.001/Unity.InternalAPIEditorBridgeDev.001.asmdef +++ b/Assets/AsmdefHelper/Unity.InternalAPIEditorBridgeDev.001/Unity.InternalAPIEditorBridgeDev.001.asmdef @@ -1,3 +1,15 @@ -{ - "name": "Unity.InternalAPIEditorBridgeDev.001" -} +{ + "name": "Unity.InternalAPIEditorBridgeDev.001", + "references": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file