internal void GenerateAndWriteSolutionAndProjects(ScriptEditorUtility.ScriptEditor scriptEditor) { Profiler.BeginSample("GenerateAndWriteSolutionAndProjects"); Profiler.BeginSample("SolutionSynchronizer.GetIslands"); // Only synchronize islands that have associated source files and ones that we actually want in the project. // This also filters out DLLs coming from .asmdef files in packages. IEnumerable <MonoIsland> islands = m_assemblyNameProvider.GetAllScriptAssemblies(ShouldFileBePartOfSolution, _projectDirectory); Profiler.EndSample(); Profiler.BeginSample("GenerateAllAssetProjectParts.GetIslands"); var allAssetProjectParts = GenerateAllAssetProjectParts(); Profiler.EndSample(); var monoIslands = islands.ToList(); Profiler.BeginSample("SyncSolution"); SyncSolution(monoIslands.ToList()); Profiler.EndSample(); var allProjectIslands = RelevantIslandsForMode(monoIslands, ModeForCurrentExternalEditor()).ToList(); foreach (MonoIsland island in allProjectIslands) { Profiler.BeginSample("SyncProject"); SyncProject(island, allAssetProjectParts, ParseResponseFileData(island), allProjectIslands); Profiler.EndSample(); } Profiler.EndSample(); }