Maison > développement back-end > C++ > Les fragments de code C # peuvent-ils être compilés dynamiquement et exécutés à partir d'un fichier ou d'un flux?

Les fragments de code C # peuvent-ils être compilés dynamiquement et exécutés à partir d'un fichier ou d'un flux?

Linda Hamilton
Libérer: 2025-02-01 14:41:09
original
780 Les gens l'ont consulté

Can C# Code Fragments Be Dynamically Compiled and Executed from a File or Stream?

Compilation dynamique et exécution du fragment de code

Question:

peut-il compiler et exécuter dynamiquement le fragment de code C # enregistré dans le fichier ou le flux d'entrée?

Réponse:

bien sûr! Dans C # et d'autres langues .NET statiques, la codéme (modèle d'objet de document de code) est la meilleure solution pour de telles tâches. Il peut également être utilisé comme un segment de code de construction dynamique ou la classe entière. implémenter:

Pour obtenir une compilation dynamique, utilisez la classe CSharpCodeProvider. Exemples comme suit:

Exécution:

Pour exécuter le code compilé, utilisez l'assemblage de chargement dynamique réflexe.

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);
        }
    }
}
Copier après la connexion
Exemple:

En utilisant la codéme, vous pouvez compiler et exécuter dynamiquement le fragment de code C # pour fournir des solutions solides et universelles pour vos besoins de programmation. Veuillez noter que

sera créé dans le répertoire de sortie de votre projet. Ce code imprimera tous les nombres pair entre 1 et 100.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal