Heim >Backend-Entwicklung >C++ >Wie kann ich dynamisch C# -Codefragmente kompilieren und ausführen?
In diesem Artikel wird das C#-Codebagment aus Textdateien oder Eingabestream dynamisch kompiliert und ausgeführt. Es wird empfohlen, das Code -Dokumentobjektmodell (CodedOM) in der C #- und .NET -Sprache zu verwenden, um diese Funktion zu erreichen.
Mitcodedom können Sie den Code als Objekt bedienen und den Compiler verwenden, um den Code dynamisch zu kompilieren. Das folgende Codefragment zeigt diese Methode:
In diesem Beispiel werden
<code class="language-csharp">using System.CodeDom.Compiler; using Microsoft.CSharp; using System.Reflection; using System.Collections.Generic; using System.Linq; class Program { static void Main(string[] args) { var csc = new CSharpCodeProvider(new Dictionary<string, string>() { { "CompilerVersion", "v3.5" } }); var parameters = new CompilerParameters(new[] { "mscorlib.dll", "System.Core.dll" }, "foo.exe", true); parameters.GenerateExecutable = true; CompilerResults results = csc.CompileAssemblyFromSource(parameters, @"using System.Linq; class Program { public static void Main(string[] args) { var q = from i in Enumerable.Range(1,100) where i % 2 == 0 select i; foreach(var item in q) { Console.WriteLine(item); } } }"); // 检查错误 results.Errors.Cast<CompilerError>().ToList().ForEach(error => Console.WriteLine(error.ErrorText)); // 动态加载并执行已编译的程序集 if (results.Errors.Count == 0) { Assembly assembly = results.CompiledAssembly; var type = assembly.GetTypes()[0]; var method = type.GetMethod("Main"); method.Invoke(null, new object[] { new string[] { } }); } } }</code>und
für den dynamischen Kompilierungscode verwendet. Wenn kein Kompilierungsfehler vorliegt, laden Sie den kompilierten Programmsatz dynamisch und rufen Sie seine CompilationParameters
-Methode auf. Um die Ergebnisse vollständiger anzuzeigen, wurde der Beispielcode an den gedruckten Puppengebieten geändert. CSharpCodeProvider
Main
Diese Methode bietet eine flexible und allgemeine Lösung für die dynamische Kompilierung und Ausführung des C#-Codebagments, mit dem Sie verschiedene Szenarien wie Skriptausführung oder dynamische Codegenerierung realisieren können.
Das obige ist der detaillierte Inhalt vonWie kann ich dynamisch C# -Codefragmente kompilieren und ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!