Хотя может показаться, что код скомпилирован в памяти (CompilerParameters.GenerateInMemory), на самом деле это не так. Для компиляции кода используется тот же компилятор, что и в Visual Studio (csc.exe). Он запускается CreateProcess (во многом как Process.Start) и запускается вне процесса, чтобы скомпилировать код в сборку на диске во временной папке. Опция GenerateInMemory вызывает Assembly.LoadFrom () для загрузки сборки.
Вы получите эквивалент проверки синтаксиса, просто установив для GenerateInMemory значение false и удалив OutputAssembly после того, как это будет сделано.
Хотя это может звучать как-то задом наперед, но огромным преимуществом является то, что это не окажет никакого давления на память вашего процесса. Это будет держать вас до тех пор, пока не выйдет C # 5.0.