C# derleyicisini kullanarak programatik bir şekilde kod derleme

ÖNEMLİ: Bu makale, Microsoft Makine Çevirisi Düzenleme yazılımı tarafından tercüme edilmiş olup, yüksek olasılıkla profesyonel bir çevirmen yerine CTF teknolojisi kullanılarak, Microsoft Topluluğu tarafından düzenlenmiştir. Microsoft, Bilgi Bankamız içindeki tüm makaleleri kendi dilinizde okuyabilmeniz için size hem profesyonel çevirmenler tarafından tercüme edilen hem de makine tarafından tercüme edildikten sonra Topluluk tarafından kontrol edilen makaleler sunar. Bununla birlikte, makine tarafından tercüme edilen, hatta Topluluk tarafından kontrol edilen bir makale bile her zaman mükemmel dil kalitesinde olmayabilir. Makalede dilinizi konuşan yabancı birisinin yapabileceği türden sözcük, söz dizimi veya dilbilgisi hataları bulunabilir. Microsoft, içeriğin hatalı tercümesinin veya müşterilerimiz tarafından kullanımının doğurabileceği olası yanlış anlamalar, hatalar veya zararlardan sorumlu değildir. Öte yandan Microsoft, Makine Çevirisi Düzenleme işlemini geliştirmek amacıyla Makine Çevirisi Düzenleme yazılımını ve araçlarını sık sık güncelleştirmektedir.

Makalenin İngilizcesi aşağıdaki gibidir: 304655
Bu makalede, Visual Basic .NET sürümü için bkz: 304654.
Özet
.NET Framework, C# dil derleyici program aracılığıyla erişmek izin sınıflarını sunar. Kendi kodu derleme yardımcı programları yazmak istiyorsanız yararlı olabilir. Bu makale, metin kaynak kodundan derlemek sağlayan örnek kodu sağlar. Uygulama ya da sadece yürütülebiliri oluştur veya yürütülebiliri oluştur ve çalıştırmak izin verir. Derleme işlemi sırasında oluşan hataları formda görüntülenir.
Daha fazla bilgi

Adım 1: gereksinimleri

  • Visual Studio
  • Visual C# dil derleyici

Adım 2: Program aracılığıyla Kodu derlemek nasıl

.NET Framework ICodeCompiler derleyici yürütme arabirimi sağlar. CSharpCodeProvider sınıf bu arabirimini uygulayan ve C# kod üreticisi ve derleyici kod örneklerinin erişim sağlar. Aşağıdaki örnek kodu CSharpCodeProvider bir örneğini oluşturur ve ICodeCompiler arabirimi başvuru almak için kullanır.
CSharpCodeProvider codeProvider = new CSharpCodeProvider();ICodeCompiler icc = codeProvider.CreateCompiler();				

ICodeCompiler arabirimi başvuru edindikten sonra kaynak kodunuzu derlemek için kullanabilirsiniz. CompilerParameters sınıfını kullanarak derleyici için parametreleri geçirir. İşte bir örnek:
System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();parameters.GenerateExecutable = true;parameters.OutputAssembly = Output;CompilerResults results = icc.CompileAssemblyFromSource(parameters,SourceString);				

Yukarıdaki kod Derleyici yürütülebilir bir dosya (DLL) yerine oluşturmak istediğiniz ve disk için oluşturulan derleme çıktısını almak istediğiniz söylemek için CompilerParameters nesnesini kullanır. CompileAssemblyFromSource için burada derleme derlenmiş çağrısıdır. Bu yöntem parametreleri nesne ve kaynak kodu, bir dize alır. Kodunuzu derlemek sonra derleme hataları olup olmadığını görmek için kontrol edebilirsiniz. Bir CompilerResults nesnesi CompileAssemblyFromSource, gelen bir dönüş değeri kullanın. 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, bir dosyadan derleme gibi diğer seçenekleri vardır. Aynı anda birden fazla dosya veya kaynakları derlemek yani derleme toplu iş. Bu sınıflar hakkında ek bilgi MSDN Çevrimiçi Kitaplığı'nda bulunabilir:

Adım 3: Adım adım yordam örneği

  1. Yeni bir Visual C# .NET Windows uygulaması oluşturun. Varsayılan olarak, Form1 oluşturulur.
  2. Düğme denetimi Form1'e ekleyin ve sonra YapıText özelliğini değiştirin.
  3. Başka bir Düğme denetimi Form1'e ekleyin ve çalıştırınve Text özelliğini değiştirin.
  4. İki TextBox denetimi Form1'e ekleyin, her iki denetimin Multiline özelliğiniTrueolarak ayarlar ve sonra bu denetimleri her biri birden çok metin satırı yapıştırabilirsiniz şekilde boyutlandırmak.
  5. Kod Düzenleyicisi'nde, Form1.cs kaynak dosyasını açın.
  6. Form1 sınıfında 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);    }}Add the beginning of the file, add these using statements:using System.CodeDom.Compiler;using System.Diagnostics;using Microsoft.CSharp;
    Not:CSharpCodeProvider sınıf Visual Studio 2005 veya Visual Studio 2008 kullanıyorsanız, onaylanmaz. Bunun yerine, aşağıdaki button1_Click uygulanmasında gösterildiği gibi CodeDomProvider sınıfını kullanabilirsiniz.
    private void button1_Click(object sender, System.EventArgs e){    CodeDomProvider codeProvider = CodeDomProvider.CreateProvider("CSharp");    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 = codeProvider.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);    }}Add the beginning of the file, add these using statements:using System.CodeDom.Compiler;using System.Diagnostics;
  7. Form1.cs dosyasýnýn Form1 kurucusunu bulun.
  8. Form1 kurucusunda InitializeComponent çağrısının ekledikten sonra düğmesi kablo aşağıdaki kodu işleyiciye Form1'e eklediğiniz her iki düğmesi tıklatın.
    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ırın. Form1 yüklendikten sonra Oluştur düğmesini tıklatın. Derleyici hatası aldığınız dikkat edin.
  10. Daha sonra varolan herhangi bir metni değiştirme metin kutusuna, aşağıdaki metni 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 ' u tıklatın. Derleme başarılı olması gerekir.
  12. Çalıştır' ı tıklatın ve bu kodu derlemek ve ortaya çıkan yürütülebilir dosyayı çalıştırın. Derleme çalıştırdığınız uygulama ile aynı klasörde kaydedilir "Out.exe" adlı bir yürütülebilir dosya oluşturur.

    NOT Farklı derleyici hataları görmek için metin kutusu kodu değiştirebilirsiniz. Örneğin, noktalı birini silin ve kodu yeniden oluşturun.
  13. Son olarak, metin kutusunda metin konsol penceresine başka bir satır çıktısını almak için kodu değiştirin. Çýktýyý görmek için Çalıştır ' ı tıklatın.
CSharpCodeProvider CompilerParameters ICodeCompiler

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 304655 - Son İnceleme: 08/17/2015 04:52:00 - Düzeltme: 5.0

Microsoft Visual C# 2008 Express Edition, Microsoft .NET Framework 1.0

  • kbsweptvs2008 kbbcl kbcompiler kbhowto kbprod2web kbmt KB304655 KbMttr
Geri bildirim