Heim > Backend-Entwicklung > C++ > Wie kann ich dynamisch C# -Codefragmente kompilieren und ausführen?

Wie kann ich dynamisch C# -Codefragmente kompilieren und ausführen?

Patricia Arquette
Freigeben: 2025-02-01 14:26:09
Original
687 Leute haben es durchsucht

How Can I Dynamically Compile and Execute C# Code Fragments?

Dynamische Kompilierung und Ausführung des Codefragments

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.

Mit

codedom 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
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[] { } });
        }
    }
}
Nach dem Login kopieren
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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage