<:> Frage:
Kann es das in der Datei- oder Eingabestream gespeicherte C -Code -Fragment dynamisch kompilieren und ausführen?
Antwort:
natürlich! In C#und einer anderen statischen .NET -Sprache ist CodedOM (Code -Dokumentobjektmodell) die beste Lösung für solche Aufgaben. Es kann auch als dynamisch konstruierendes Codesegment oder die gesamte Klasse verwendet werden. implementieren:
Um eine dynamische Kompilierung zu erreichen, verwenden Sie die CSHARPCodeProvider -Klasse. Beispiele wie folgt:
Ausführung:
Um den kompilierten Code auszuführen, verwenden Sie die dynamische Reflex -Ladeanordnung.
using System; using System.Collections.Generic; using Microsoft.CSharp; using System.CodeDom.Compiler; public class Program { public static void Main(string[] args) { // 创建C#代码提供程序 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; public 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); } } }" ); // 处理任何错误 foreach (CompilerError error in results.Errors) { Console.WriteLine(error.ErrorText); } } }
Mit CodedOM können Sie das C#-Codebagment dynamisch kompilieren und ausführen, um starke und universelle Lösungen für Ihre Programmieranforderungen bereitzustellen. Bitte beachten Sie, dass
in Ihrem Projektausgabeverzeichnis erstellt wird. Dieser Code wird alle gleichmäßigen Zahlen zwischen 1 und 100 gedruckt.
Das obige ist der detaillierte Inhalt vonKönnen C -Code -Fragmente dynamisch kompiliert und aus einer Datei oder einem Stream ausgeführt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!