lordfritte
Lieutenant
- Registriert
- Juli 2006
- Beiträge
- 964
Hallo ich habe ein Problem, ich möchte mir CodeDom ein kleines bisschen Code zur Laufzeit Compilieren
Aber am ende bei "object o = ass.CreateInstance("CSharpCompiler.Compiler");" kommt immer null.. aber warum?? Wo ist der Fehler?
PHP:
private ICompiler Compile()
{
StringBuilder source = new StringBuilder();
CompilerParameters parameters = new CompilerParameters();
parameters.GenerateInMemory = true;
foreach (Assembly asm in AppDomain.CurrentDomain.GetAssemblies())
{
if ((asm.Location != null) && (asm.Location.Length > 0))
parameters.ReferencedAssemblies.Add(new Uri(asm.Location).LocalPath);
}
source.AppendLine("using System;");
source.AppendLine("using Core;");
source.AppendLine("namespace CSharpCompiler {");
source.AppendLine("public class Compiler : ICompiler {");
source.AppendLine("public Compiler() { }");
source.AppendLine("public override object Parse(string sInput) {");
source.AppendLine("return sInput;");
source.AppendLine("}}}");
CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp");
CompilerResults compilerResults = provider.CompileAssemblyFromSource(parameters, source.ToString());
if ((compilerResults != null) && (compilerResults.Errors.Count > 0))
{
foreach (CompilerError error in compilerResults.Errors)
MessageBox.Show(error.ToString());
}
else
{
Assembly ass = compilerResults.CompiledAssembly;
object o = ass.CreateInstance("CSharpCompiler.Compiler");
return (ICompiler)o;
}
return null;
}
Aber am ende bei "object o = ass.CreateInstance("CSharpCompiler.Compiler");" kommt immer null.. aber warum?? Wo ist der Fehler?