Je suppose qu'il n'invoque pas csc.exe ou n'implémente pas un compilateur entier, alors comment ça marche?Comment LINQPad compile-t-il le code?
Mise à jour: Merci à Jon Skeet pour le pointeur vers le code qui était facile à apprendre.
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[] { } });
csc.exe, il est ce qui rend le travail de System.CodeDom. Et l'IDE. –
@Hans: Eh bien, presque. Il serait plus exact de dire que csc.exe et l'EDI partagent une bibliothèque commune qui effectue l'analyse de code. –
+1 C'est une bonne question et Jon Skeet le fait encore! – MoonKnight