In Unity 2021.1, we have rewritten the script compilation pipeline in the editor (ie, how we invoke the Roslyn csc compiler to compile all your C# scripts into .NET assemblies) to use an incremental build system. You can use this thread to discuss this change or report any issues with it. Incremental script compilation means that we now have a proper build system which drives script compilation, which can track inputs of and dependencies between individual build nodes, and thus can determine what actually needs to be rebuild when making a build - and cache build results for different platforms and configurations so that less rebuilding is needed. In practice, this means: -If you change a script in an asmdef, only that asmdef or any code depending on that asmdef gets recompiled. -If you switch between platforms, or between debug/non-debug mode, only code which has not yet been compiled in that configuration before gets recompiled. -If you build a player, scripts only get recompiled if they have changed since the last player build of that configuration. -You get better progress reporting of script compilation happening in the background. Some small API changes related to this: -ScriptCompilerOptions.EmitReferenceAssembly has been removed, since this is now always enabled -CompilationPipeline.assemblyCompilationStarted has been deprecated. Its main use was to profile script compilation. Since script compilation is now happening out of process, we cannot invoke these exactly when compiling an individual assembly starts or finished, so you will not get useful results for profiling any more. This is the first step in a bigger project to move player builds to an incremental build system as a way to avoid redundant work and make building faster that way.