Rumah > pembangunan bahagian belakang > C++ > Bolehkah serpihan kod C# disusun secara dinamik dan dilaksanakan dari fail atau aliran?

Bolehkah serpihan kod C# disusun secara dinamik dan dilaksanakan dari fail atau aliran?

Linda Hamilton
Lepaskan: 2025-02-01 14:41:09
asal
799 orang telah melayarinya

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

kompilasi dinamik dan pelaksanaan serpihan kod

<:> Soalan:

Bolehkah ia menyusun dan melaksanakan serpihan kod C#yang disimpan dalam fail atau aliran input?

Jawapan:

Sudah tentu! Dalam C#dan bahasa statik .NET lain, CodeDom (model objek dokumen kod) adalah penyelesaian terbaik untuk tugas -tugas tersebut. Ia juga boleh digunakan sebagai segmen kod membina dinamik atau seluruh kelas. pelaksanaan:

Untuk mencapai kompilasi dinamik, gunakan kelas CSharpCodeProvider. Contoh seperti berikut:

pelaksanaan:

Untuk melaksanakan kod yang disusun, gunakan pemasangan pemuatan dinamik refleks.

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);
        }
    }
}
Salin selepas log masuk
Contoh:

Dengan menggunakan CodeDom, anda boleh menyusun dan melaksanakan fragmen kod C#untuk menyediakan penyelesaian yang kuat dan sejagat untuk keperluan pengaturcaraan anda. Sila ambil perhatian bahawa

akan dibuat dalam direktori output projek anda. Kod ini akan mencetak semua nombor antara 1 hingga 100.

Atas ialah kandungan terperinci Bolehkah serpihan kod C# disusun secara dinamik dan dilaksanakan dari fail atau aliran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan