internal void GenerateAndWriteSolutionAndProjects(ScriptEditorUtility.ScriptEditor scriptEditor) { // 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 = EditorCompilationInterface.Instance.GetAllScriptAssemblies(EditorScriptCompilationOptions.BuildingForEditor | EditorCompilationInterface.GetAdditionalEditorScriptCompilationOptions()) .Where(i => 0 < i.Files.Length && i.Files.Any(ShouldFileBePartOfSolution)) .Select(x => x.ToMonoIsland(EditorScriptCompilationOptions.BuildingForEditor, string.Empty, _projectDirectory)).ToList(); var allAssetProjectParts = GenerateAllAssetProjectParts(); var monoIslands = islands.ToList(); SyncSolution(monoIslands); var allProjectIslands = RelevantIslandsForMode(monoIslands, ModeForCurrentExternalEditor()).ToList(); foreach (MonoIsland island in allProjectIslands) { SyncProject(island, allAssetProjectParts, ParseResponseFileData(island), allProjectIslands); } if (scriptEditor == ScriptEditorUtility.ScriptEditor.VisualStudioCode) { WriteVSCodeSettingsFiles(); } }
internal void GenerateAndWriteSolutionAndProjects(ScriptEditorUtility.ScriptEditor scriptEditor) { // 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 = EditorCompilationInterface.GetAllMonoIslands(). Where(i => 0 < i._files.Length && i._files.Any(f => ShouldFileBePartOfSolution(f))); var allAssetProjectParts = GenerateAllAssetProjectParts(); var responseFilePath = Path.Combine("Assets", MonoCSharpCompiler.ReponseFilename); var responseFileData = ScriptCompilerBase.ParseResponseFileFromFile(Path.Combine(_projectDirectory, responseFilePath)); if (responseFileData.Errors.Length > 0) { foreach (var error in responseFileData.Errors) { UnityEngine.Debug.LogErrorFormat("{0} Parse Error : {1}", responseFilePath, error); } } SyncSolution(islands); var allProjectIslands = RelevantIslandsForMode(islands, ModeForCurrentExternalEditor()).ToList(); foreach (MonoIsland island in allProjectIslands) { SyncProject(island, allAssetProjectParts, responseFileData, allProjectIslands); } if (scriptEditor == ScriptEditorUtility.ScriptEditor.VisualStudioCode) { WriteVSCodeSettingsFiles(); } }
internal void GenerateAndWriteSolutionAndProjects(ScriptEditorUtility.ScriptEditor scriptEditor) { // 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 = EditorCompilationInterface.GetAllMonoIslands(). Where(i => 0 < i._files.Length && i._files.Any(f => ShouldFileBePartOfSolution(f))); var allAssetProjectParts = GenerateAllAssetProjectParts(); var responseFilePath = Path.Combine("Assets", MonoCSharpCompiler.ResponseFilename); var monoIslands = islands.ToList(); SyncSolution(monoIslands); var allProjectIslands = RelevantIslandsForMode(monoIslands, ModeForCurrentExternalEditor()).ToList(); foreach (MonoIsland island in allProjectIslands) { var responseFileData = parseResponseFileData(island, responseFilePath); SyncProject(island, allAssetProjectParts, responseFileData, allProjectIslands); } if (scriptEditor == ScriptEditorUtility.ScriptEditor.VisualStudioCode) { WriteVSCodeSettingsFiles(); } }
public void Sync() { this.SetupProjectSupportedExtensions(); if (!AssetPostprocessingInternal.OnPreGeneratingCSProjectFiles()) { ScriptEditorUtility.ScriptEditor scriptEditorFromPreferences = ScriptEditorUtility.GetScriptEditorFromPreferences(); if (scriptEditorFromPreferences == ScriptEditorUtility.ScriptEditor.SystemDefault || scriptEditorFromPreferences == ScriptEditorUtility.ScriptEditor.Other) { return; } IEnumerable <MonoIsland> islands = from i in EditorCompilationInterface.GetAllMonoIslands() where 0 < i._files.Length && i._files.Any((string f) => this.ShouldFileBePartOfSolution(f)) select i; Dictionary <string, string> allAssetsProjectParts = this.GenerateAllAssetProjectParts(); string[] responseFileDefinesFromFile = ScriptCompilerBase.GetResponseFileDefinesFromFile(MonoCSharpCompiler.ReponseFilename); this.SyncSolution(islands); List <MonoIsland> list = SolutionSynchronizer.RelevantIslandsForMode(islands, SolutionSynchronizer.ModeForCurrentExternalEditor()).ToList <MonoIsland>(); foreach (MonoIsland current in list) { this.SyncProject(current, allAssetsProjectParts, responseFileDefinesFromFile, list); } if (scriptEditorFromPreferences == ScriptEditorUtility.ScriptEditor.VisualStudioCode) { this.WriteVSCodeSettingsFiles(); } } AssetPostprocessingInternal.CallOnGeneratedCSProjectFiles(); }
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. List <Compilation.Assembly> assemblies = m_assemblyNameProvider.GetAssemblies(ShouldFileBePartOfSolution).ToList(); Profiler.EndSample(); Profiler.BeginSample("GenerateAllAssetProjectParts.GetIslands"); var allAssetProjectParts = GenerateAllAssetProjectParts(); Profiler.EndSample(); Profiler.BeginSample("SyncSolution"); SyncSolution(assemblies); Profiler.EndSample(); var allProjectAssemblies = RelevantAssembliesForMode(assemblies, ModeForCurrentExternalEditor()).ToList(); foreach (Compilation.Assembly assembly in allProjectAssemblies) { Profiler.BeginSample("SyncProject"); SyncProject(assembly, allAssetProjectParts, ParseResponseFileData(assembly), allProjectAssemblies); Profiler.EndSample(); } Profiler.EndSample(); }
private static SolutionSynchronizer.Mode ModeForCurrentExternalEditor() { ScriptEditorUtility.ScriptEditor scriptEditorFromPreferences = ScriptEditorUtility.GetScriptEditorFromPreferences(); SolutionSynchronizer.Mode result; if (scriptEditorFromPreferences == ScriptEditorUtility.ScriptEditor.VisualStudio || scriptEditorFromPreferences == ScriptEditorUtility.ScriptEditor.VisualStudioExpress || scriptEditorFromPreferences == ScriptEditorUtility.ScriptEditor.VisualStudioCode) { result = SolutionSynchronizer.Mode.UnityScriptAsPrecompiledAssembly; } else { result = ((!EditorPrefs.GetBool("kExternalEditorSupportsUnityProj", false)) ? SolutionSynchronizer.Mode.UnityScriptAsPrecompiledAssembly : SolutionSynchronizer.Mode.UnityScriptAsUnityProj); } return(result); }
public static string GetExternalScriptEditorArgs() { string externalScriptEditor = ScriptEditorUtility.GetExternalScriptEditor(); ScriptEditorUtility.ScriptEditor scriptEditorFromPath = ScriptEditorUtility.GetScriptEditorFromPath(externalScriptEditor); string result; if (scriptEditorFromPath != ScriptEditorUtility.ScriptEditor.Other) { result = ""; } else { result = EditorPrefs.GetString(ScriptEditorUtility.GetScriptEditorArgsKey(externalScriptEditor), ScriptEditorUtility.GetDefaultStringEditorArgs()); } return(result); }
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(); } if (scriptEditor == ScriptEditorUtility.ScriptEditor.VisualStudioCode) { Profiler.BeginSample("WriteVSCodeSettingsFiles"); WriteVSCodeSettingsFiles(); Profiler.EndSample(); } Profiler.EndSample(); }
private void DoUnityProjCheckbox() { bool isConfigurable = false; bool value = false; ScriptEditorUtility.ScriptEditor scriptEditor = GetSelectedScriptEditor(); if (scriptEditor == ScriptEditorUtility.ScriptEditor.MonoDevelop) { isConfigurable = true; value = m_ExternalEditorSupportsUnityProj; } using (new EditorGUI.DisabledScope(!isConfigurable)) { value = EditorGUILayout.Toggle(ExternalProperties.addUnityProjeToSln, value); } if (isConfigurable) { m_ExternalEditorSupportsUnityProj = value; } }