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 @@
-
-
-
+
+
+
@@ -15,8 +15,18 @@
+
+
+
+
+
+
@@ -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