Я знаю, я просто балуюсь с вами :) Спасибо за обновленный ответ.

дполагаю, что он не вызывает csc.exe и не реализует весь компилятор, так как это работает?

Обновление: спасибо Джону Скиту за указатель на код, который был легко выучить.

string c = @"
public class A
{
    public static void Main(string[] args)
    {
        System.Console.WriteLine(""hello world"");
    }
}
";

CodeDomProvider compiler = new CSharpCodeProvider();

CompilerParameters parameters = new CompilerParameters();
parameters.WarningLevel = 4;
parameters.GenerateExecutable = false;
parameters.GenerateInMemory = true;

CompilerResults r = compiler.CompileAssemblyFromSource(parameters, c);

Assembly a = r.CompiledAssembly;

Type[] ts = a.GetTypes();

Type t = ts[0];

object o = t.GetMethod("Main").Invoke(null, new object[] { new string[] { } });

Ответы на вопрос(2)

Ваш ответ на вопрос