public static void AddScriptCompilationData(BeeDriver beeDriver, EditorCompilation editorCompilation, ScriptAssembly[] assemblies, bool debug, string outputDirectory, BuildTarget buildTarget, bool buildingForEditor, string[] extraScriptingDefines = null) { // Need to call AssemblyDataFrom before calling CompilationPipeline.GetScriptAssemblies, // as that acts on the same ScriptAssemblies, and modifies them with different build settings. var cachedAssemblies = AssemblyDataFrom(assemblies); AssemblyData[] codeGenAssemblies; using (new ProfilerMarker("GetScriptAssembliesForCodeGen").Auto()) { codeGenAssemblies = buildingForEditor ? null : AssemblyDataFrom(CodeGenAssemblies(CompilationPipeline.GetScriptAssemblies(editorCompilation, AssembliesType.Editor, extraScriptingDefines))); } var movedFromExtractorPath = EditorApplication.applicationContentsPath + $"/Tools/ScriptUpdater/ApiUpdater.MovedFromExtractor.exe"; var dotNetSdkRoslynPath = EditorApplication.applicationContentsPath + $"/DotNetSdkRoslyn"; var localization = "en-US"; if (LocalizationDatabase.currentEditorLanguage != SystemLanguage.English && EditorPrefs.GetBool("Editor.kEnableCompilerMessagesLocalization", false)) { localization = LocalizationDatabase.GetCulture(LocalizationDatabase.currentEditorLanguage); } var assembliesToScanForTypeDB = new HashSet <string>(); var searchPaths = new HashSet <string>(BuildPlayerDataGenerator.GetStaticSearchPaths(buildTarget)); var options = EditorScriptCompilationOptions.BuildingIncludingTestAssemblies; if (buildingForEditor) { options |= EditorScriptCompilationOptions.BuildingForEditor; } foreach (var a in editorCompilation.GetAllScriptAssemblies(options, extraScriptingDefines)) { if (!a.Flags.HasFlag(AssemblyFlags.EditorOnly)) { var path = a.FullPath.ToNPath(); assembliesToScanForTypeDB.Add(path.ToString()); searchPaths.Add(path.Parent.ToString()); } } var precompileAssemblies = editorCompilation.PrecompiledAssemblyProvider.GetPrecompiledAssembliesDictionary( buildingForEditor, BuildPipeline.GetBuildTargetGroup(buildTarget), buildTarget, extraScriptingDefines); if (precompileAssemblies != null) { foreach (var a in precompileAssemblies) { if (!a.Value.Flags.HasFlag(AssemblyFlags.EditorOnly)) { var path = a.Value.Path.ToNPath(); assembliesToScanForTypeDB.Add(path.ToString()); searchPaths.Add(path.Parent.ToString()); } } } beeDriver.DataForBuildProgram.Add(new ScriptCompilationData { OutputDirectory = outputDirectory, DotnetRuntimePath = NetCoreProgram.DotNetRuntimePath.ToString(), DotnetRoslynPath = dotNetSdkRoslynPath, MovedFromExtractorPath = movedFromExtractorPath, Assemblies = cachedAssemblies, CodegenAssemblies = codeGenAssemblies, Debug = debug, BuildTarget = buildTarget.ToString(), Localization = localization, EnableDiagnostics = editorCompilation.EnableDiagnostics, BuildPlayerDataOutput = $"Library/BuildPlayerData/{(buildingForEditor ? "Editor" : "Player")}", ExtractRuntimeInitializeOnLoads = !buildingForEditor, AssembliesToScanForTypeDB = assembliesToScanForTypeDB.OrderBy(p => p).ToArray(), SearchPaths = searchPaths.OrderBy(p => p).ToArray() }); }
public AssemblyInfoManaged[] ExtractAssemblyTypeInfo(bool isEditor) { var buildPlayerDataGeneratorHelper = new BuildPlayerDataGenerator(); return(ExtractAssemblyTypeInfoFromFiles(buildPlayerDataGeneratorHelper.GetTypeDbFilePaths(isEditor))); }