İngilizce dilinde oku

Aracılığıyla paylaş


C# derleyicisi kullanarak program aracılığıyla kod derleme

Bu makalede, C# derleyicisi kullanılarak bir metin kaynağından kod derleme açıklanmaktadır.

Özgün ürün sürümü: Visual Studio, .NET Framework
Özgün KB numarası: 304655

Özet

Microsoft .NET Framework, C# dil derleyicisine program aracılığıyla erişmenizi sağlayan sınıfları kullanıma sunar. Kendi kod derleme yardımcı programlarınızı yazmak istiyorsanız bu yararlı olabilir. Bu makalede, bir metin kaynağından kod derlemenizi sağlayan örnek kod sağlanır. Uygulama yalnızca yürütülebilir dosyayı oluşturmanıza veya yürütülebilir dosyayı oluşturup çalıştırmanıza olanak tanır. Derleme işlemi sırasında oluşan hatalar formda görüntülenir.

Gereksinimler

  • Visual Studio
  • Visual C# dil derleyicisi

C# derleyicisi kullanarak kod derleme

.NET Framework, derleyici yürütme arabirimini ICodeCompiler sağlar. CSharpCodeProvider sınıfı bu arabirimi uygular ve C# kod oluşturucu ve kod derleyicisi örneklerine erişim sağlar. Aşağıdaki örnek kod bir örneği CSharpCodeProvider oluşturur ve bunu kullanarak bir ICodeCompiler arabirime başvuru alır.

CSharpCodeProvider codeProvider = new CSharpCodeProvider();
ICodeCompiler icc = codeProvider.CreateCompiler();

Bir ICodeCompiler arabirim başvurusuna sahip olduktan sonra, kaynak kodunuzu derlemek için bunu kullanabilirsiniz. sınıfını kullanarak parametreleri derleyiciye CompilerParameters geçireceksiniz. Örnek aşağıda verilmiştir:

System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();
parameters.GenerateExecutable = true;
parameters.OutputAssembly = Output;
CompilerResults results = icc.CompileAssemblyFromSource(parameters,SourceString);

Yukarıdaki kod, derleyiciye yürütülebilir dosya oluşturmak istediğinizi (DLL'nin aksine) ve sonuçta elde edilen derlemeyi diske çıkarmak istediğinizi bildirmek için nesnesini kullanır CompilerParameters . çağrısı CompileAssemblyFromSource , derlemenin derlendiği yerdir. Bu yöntem parameters nesnesini ve bir dize olan kaynak kodunu alır. Kodunuzu derledikten sonra herhangi bir derleme hatası olup olmadığını kontrol edebilirsiniz. nesnesi olan CompilerResults öğesinden CompileAssemblyFromSourcedönüş değerini kullanırsınız. Bu nesne, derleme sırasında oluşan hataları içeren bir hata koleksiyonu içerir.

if (results.Errors.Count > 0)
{
    foreach(CompilerError CompErr in results.Errors)
    {
        textBox2.Text = textBox2.Text +
            "Line number " + CompErr.Line +
            ", Error Number: " + CompErr.ErrorNumber +
            ", '" + CompErr.ErrorText + ";" +
            Environment.NewLine + Environment.NewLine;
    }
}

Derleme için dosyadan derleme gibi başka seçenekler de vardır. Toplu derleme de yapabilirsiniz; bu da aynı anda birden çok dosya veya kaynak derleyebileceğiniz anlamına gelir.

Adım adım yordam örneği

  1. Yeni bir Visual C# .NET Windows uygulaması oluşturun. Form1 varsayılan olarak oluşturulur.

  2. Form1'e bir Düğme denetimi ekleyin ve text özelliğini Build olarak değiştirin.

  3. Form1'e başka bir Düğme denetimi ekleyin ve text özelliğini Çalıştır olarak değiştirin.

  4. Form1'e iki TextBox denetimi ekleyin, her iki denetim için de Çok Satırlı özelliğini True olarak ayarlayın ve sonra her birine birden çok metin satırı yapıştırabilmek için bu denetimleri boyutlandırın.

  5. Kod düzenleyicisinde Form1.cs kaynak dosyasını açın.

  6. Form1 sınıfında, aşağıdaki düğme tıklama işleyicisini yapıştırın.

    private void button1_Click(object sender, System.EventArgs e)
    {
        CSharpCodeProvider codeProvider = new CSharpCodeProvider();
        ICodeCompiler icc = codeProvider.CreateCompiler();
        string Output = "Out.exe";
        Button ButtonObject = (Button)sender;
    
        textBox2.Text = "";
        System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();
        //Make sure we generate an EXE, not a DLL
        parameters.GenerateExecutable = true;
        parameters.OutputAssembly = Output;
        CompilerResults results = icc.CompileAssemblyFromSource(parameters, textBox1.Text);
    
        if (results.Errors.Count > 0)
        {
            textBox2.ForeColor = Color.Red;
            foreach (CompilerError CompErr in results.Errors)
            {
                textBox2.Text = textBox2.Text +
                            "Line number " + CompErr.Line +
                            ", Error Number: " + CompErr.ErrorNumber +
                            ", '" + CompErr.ErrorText + ";" +
                            Environment.NewLine + Environment.NewLine;
            }
        }
        else
        {
            //Successful Compile
            textBox2.ForeColor = Color.Blue;
            textBox2.Text = "Success!";
            //If we clicked run then launch our EXE
            if (ButtonObject.Text == "Run") Process.Start(Output);
        }
    }
    

    Dosyanın başına şu using deyimleri ekleyin:

    using System.CodeDom.Compiler;
    using System.Diagnostics;
    using Microsoft.CSharp;
    
  7. Form1.cs içinde oluşturucuyu Form1 bulun.

  8. Oluşturucuda çağrısından InitializeComponent Form1 sonra, düğme tıklama işleyicisini Form1'e eklediğiniz her iki düğmeye de bağlayabilmek için aşağıdaki kodu ekleyin.

    public Form1()
    {
        InitializeComponent();
        this.button1.Click += new System.EventHandler(this.button1_Click);
        this.button2.Click += new System.EventHandler(this.button1_Click);
    }
    
  9. Projeyi çalıştırma. Form1 yükledikten sonra Oluştur düğmesine tıklayın.

    Not

    Derleyici hatası alıyorsunuz.

  10. Ardından, var olan tüm metinleri değiştirerek aşağıdaki metni metin kutusuna kopyalayın:

    using System;
    namespace HelloWorld
    {
        /// <summary>
        /// Summary description for Class1.
        /// </summary>
        class HelloWorldClass
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Hello World!");
                Console.ReadLine();
            }
        }
    }
    
  11. Yeniden Oluştur'a tıklayın. Derleme başarılı olmalıdır.

  12. Çalıştır'a tıklar ve kodu derler ve sonuçta elde edilen yürütülebilir dosyayı çalıştırır. Derleme, çalıştırdığınız uygulamayla aynı klasöre kaydedilen Out.exe adlı yürütülebilir bir dosya oluşturur.

    Not

    Farklı derleyici hatalarını görmek için metin kutusundaki kodu değiştirebilirsiniz. Örneğin, noktalı virgüllerden birini silin ve kodu yeniden oluşturun.

  13. Son olarak, konsol penceresine başka bir metin satırı çıkarmak için metin kutusundaki kodu değiştirin. Çıkışı görmek için Çalıştır'a tıklayın.

Başvurular