Nasıl yapılır: programsal olarak Visual Basic .NET veya Visual Basic 2005 Derleyicisi kullanarak kodu derleyin.

Makale çevirileri Makale çevirileri
Makale numarası: 304654 - Bu makalenin geçerli olduğu ürünleri görün.
Bu makalenin Microsoft Visual C# .NET sürümü için bkz: 304655.

Bu makalede, aşağıdaki Microsoft .NET Framework Sınıf Kitaplığı ad alanına başvurulmaktadır:
  • System.CodeDom.Compiler
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

.NET Framework, sınıflar programlama, Visual Basic .NET veya Visual Basic 2005 Dil Derleyici erişmenize olanak sağlar. Bu da kendi Kod derleniyor yardımcı programları yazmak istediğiniz durumlarda yararlı olabilir. Bu makalede, bir <a0>metin</a0> kaynaktan kodunu derlemek olanak tanıyan bir örnek kodu sağlanır. Uygulama ya da yalnızca yürütülebilir dosyayı veya yürütülebilir dosyayı oluşturmak ve onu sağlar. Derleme işlemi sırasında oluşan hataları, formda görüntülenir.

Daha fazla bilgi

1. Adım: gereksinimleri

  • Visual Studio .NET veya Visual Studio 2005
  • Visual Basic .NET dil derleyici veya Visual Basic 2005 dil derleyicisi

2. Adım: Nasıl programsal olarak kodu derle

.NET Framework ICodeCompiler derleyici yürütme arabirimi sağlar. VBCodeProvider sınıfı, bu arabirimi uygulayan ve Visual Basic kod üreticisi ve kod derleyici erişim sağlar. Aşağıdaki örnek, VBCodeProvider bir kopyas?n? olu?turur ve ICodeCompiler bir arabirime başvuru almak için kullanır.

Dim codeProvider As New VBCodeProvider()
Dim icc As ICodeCompiler = codeProvider.CreateCompiler
				

Bir başvuru ICodeCompiler arabirim sonra kaynak kodunu derlemek için kullanabilirsiniz. Parametreleri için derleyici CompilerParameters sınıfı'nı kullanarak geçirin. Işte bir örnek:
Dim parameters As New CompilerParameters()
Dim results As CompilerResults

parameters.GenerateExecutable = True
parameters.OutputAssembly = Output
results = icc.CompileAssemblyFromSource(parameters, SourceText)
				

Yukarıdaki kod CompilerParameters nesne derleyici yürütülebilir bir dosya (karşıt olarak bir DLL) oluşturmak istediğiniz disk ortaya çıkan bir derlemeye çıkış istediğiniz ve söylemek için kullanır. CompileAssemblyFromSource çağrısı, derleme derlenmiş ' dir. Bu yöntem parametreleri nesneniz ve kaynak kodu, bir dize alır. Kod derleme sonra herhangi bir derleme hatalarıyla karşılaşıldığını denetleyebilirsiniz. CompilerResults nesnesi olan CompileAssemblyFromSource, gelen bir dönüş değeri kullanıyoruz. Bu nesne sırasında derleme oluşan hatalar içeren bir hata koleksiyonu içerir.
If results.Errors.Count > 0 Then
   'There were compiler errors
   Dim CompErr As CompilerError
   For Each CompErr In results.Errors
      textBox2.Text = textBox2.Text & _
                      "Line number " & CompErr.Line & _
                      ", Error Number: " & CompErr.ErrorNumber & _
                      ", '" & CompErr.ErrorText & ";" & _
      Environment.NewLine & Environment.NewLine
   Next
End If

				

Derleme, bir dosyadan derleme gibi diğer seçenekleri de vardır. Ayrıca, başka bir deyişle aynı anda birden fazla dosya veya kaynakları derleyebilirsiniz derleme toplu. Bu sınıflar hakkında ek bilgi MSDN Online sitesindeki kullanılabilir:
http://msdn.microsoft.com/en-us/default.aspx

3. Adım: Adım adım örnek

  1. Yeni bir Visual Basic .NET veya Visual Basic 2005 Windows uygulaması oluşturun. Varsayılan olarak, Form1 oluşturulur.
  2. Varolan metnin tümünü Form1 <a1>Kod Görüntüle</a1> penceresinde aşağıdaki kodla değiştirin:
    Option Strict On
    Imports System.CodeDom.Compiler
    
    
    Public Class Form1
        Inherits System.Windows.Forms.Form
    
    #Region " Windows Form Designer generated code "
    
        Public Sub New()
            MyBase.New()
    
            'This call is required by the Windows Form Designer.
            InitializeComponent()
    
            'Add any initialization after the InitializeComponent() call
    
        End Sub
    
        'Form overrides dispose to clean up the component list.
        Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
            If disposing Then
                If Not (components Is Nothing) Then
                    components.Dispose()
                End If
            End If
            MyBase.Dispose(disposing)
        End Sub
        Friend WithEvents textBox1 As System.Windows.Forms.TextBox
        Friend WithEvents button1 As System.Windows.Forms.Button
        Friend WithEvents textBox2 As System.Windows.Forms.TextBox
        Friend WithEvents button2 As System.Windows.Forms.Button
    
        'Required by the Windows Form Designer
        Private components As System.ComponentModel.Container
    
        'NOTE: The following procedure is required by the Windows Form Designer
        'It can be modified using the Windows Form Designer.  
        'Do not modify it using the code editor.
        <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
            Me.textBox2 = New System.Windows.Forms.TextBox()
            Me.textBox1 = New System.Windows.Forms.TextBox()
            Me.button1 = New System.Windows.Forms.Button()
            Me.button2 = New System.Windows.Forms.Button()
            Me.SuspendLayout()
            '
            'textBox2
            '
            Me.textBox2.BackColor = System.Drawing.SystemColors.Control
            Me.textBox2.BorderStyle = System.Windows.Forms.BorderStyle.None
            Me.textBox2.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
            Me.textBox2.ForeColor = System.Drawing.SystemColors.WindowText
            Me.textBox2.Location = New System.Drawing.Point(264, 56)
            Me.textBox2.Multiline = True
            Me.textBox2.Name = "textBox2"
            Me.textBox2.Size = New System.Drawing.Size(240, 232)
            Me.textBox2.TabIndex = 2
            Me.textBox2.Text = ""
            '
            'textBox1
            '
            Me.textBox1.Location = New System.Drawing.Point(16, 48)
            Me.textBox1.Multiline = True
            Me.textBox1.Name = "textBox1"
            Me.textBox1.Size = New System.Drawing.Size(240, 240)
            Me.textBox1.TabIndex = 0
            Me.textBox1.Text = "textBox1"
            '
            'button1
            '
            Me.button1.Location = New System.Drawing.Point(368, 304)
            Me.button1.Name = "button1"
            Me.button1.TabIndex = 1
            Me.button1.Text = "Build"
            '
            'button2
            '
            Me.button2.Location = New System.Drawing.Point(456, 304)
            Me.button2.Name = "button2"
            Me.button2.TabIndex = 1
            Me.button2.Text = "Run"
            '
            'Form1
            '
            Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
            Me.ClientSize = New System.Drawing.Size(544, 333)
            Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.button2, Me.textBox1, Me.button1, Me.textBox2})
            Me.Name = "Form1"
            Me.Text = "Form1"
            Me.ResumeLayout(False)
    
        End Sub
    
    #End Region
    
        Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click, button2.Click
            Dim codeProvider As New VBCodeProvider()
            Dim icc As ICodeCompiler = codeProvider.CreateCompiler
            Dim Output As String = "Out.exe"
            Dim ButtonObject As Button = CType(sender, Button)
    
            textBox2.Text = ""
            Dim parameters As New CompilerParameters()
            Dim results As CompilerResults
            'Make sure we generate an EXE, not a DLL
            parameters.GenerateExecutable = True
            parameters.OutputAssembly = Output
            results = icc.CompileAssemblyFromSource(parameters, textBox1.Text)
    
            If results.Errors.Count > 0 Then
                'There were compiler errors
                textBox2.ForeColor = Color.Red
                Dim CompErr As CompilerError
                For Each CompErr In results.Errors
                    textBox2.Text = textBox2.Text & _
                    "Line number " & CompErr.Line & _
                    ", Error Number: " & CompErr.ErrorNumber & _
                    ", '" & CompErr.ErrorText & ";" & _
                    Environment.NewLine & Environment.NewLine
                Next
            Else
                'Successful Compile
                textBox2.ForeColor = Color.Blue
                textBox2.Text = "Success!"
                'If we clicked run then launch the EXE
                If ButtonObject.Text = "Run" Then Process.Start(Output)
            End If
    
        End Sub
    
    End Class
    					
    Not kodunu Visual Basic 2005'te değiştirilmelidir. Visual Basic 2005 Form1 adlı yeni bir form oluşturursanız, kodunuz için Form1.vb dosya ve otomatik olarak oluşturulan bölümü içeren Form1.Designer.vb dosyası vardır. Windows Forms Designer kısmi anahtar Form1 uygulamasının iki ayrı dosyaya bölmek için kullanır. Bu, Tasarımcı verilen kod kodunuzu interspersed engeller. Visual Basic 2005 dil geliştirmeleri hakkında daha fazla bilgi için aşağıdaki Microsoft Web sitesini ziyaret edin:
    http://msdn2.microsoft.com/en-us/library/ms379584(vs.80).aspx
    Kısmi sınıfları ve Windows Forms Tasarımcısı hakkında daha fazla bilgi için aşağıdaki Microsoft Web sitesini ziyaret edin:
    http://msdn2.microsoft.com/en-us/library/ms171843.aspx
  3. Projeyi çalıştırın. Form1'ı yüklendikten sonra düğmesini tıklatın. Derleyici hatalarını birkaç aldığınız dikkat edin.
  4. Daha da herhangi bir varolan metnin yerine metin kutusu, aşağıdaki kodu kopyalayın:
    Imports System
    
    Module Module1
    
        Sub Main()
            Console.WriteLine("Hello World!")
            Console.WriteLine("Press ENTER")
            Console.ReadLine()
        End Sub
    
    End Module
    					
  5. Oluşturma, yeniden tıklatın. Derleme başarılı olması gerekir.
  6. Çalıştır ' ı tıklatın ve kodunu derlemek ve elde edilen yürütülebilir dosyayı çalıştırmak. Derleme, çalıştırmakta olduğunuz uygulama ile aynı klasörde "Out.exe" adlı bir yürütülebilir dosya oluşturur.

    Not: Farklı bir derleyici hatalarını görmek için metin kutusunu kodu değiştirebilirsiniz. Örneğin, parantez birini silin ve kodun yeniden.
  7. Son olarak, metin, metin konsol penceresi için bir satır çıkış kodu değiştirebilirsiniz. Çıktı görmek için Çalıştır ' ı tıklatın.

Referanslar

VBCodeProvider sınıfı
http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.vbcodeprovider.aspx

ICodeCompiler arabirimi
http://msdn.microsoft.com/en-us/library/system.codedom.compiler.icodecompiler(VS.71).aspx

Özellikler

Makale numarası: 304654 - Last Review: 11 Mayıs 2007 Cuma - Gözden geçirme: 4.7
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft .NET Framework 1.0
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Anahtar Kelimeler: 
kbmt kbvs2005applies kbvs2005swept kbbcl kbcompiler kbhowto kbprod2web KB304654 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:304654

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com