.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.
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:
3. Adım: Adım adım örnek
- Yeni bir Visual Basic .NET veya Visual Basic 2005 Windows uygulaması oluşturun. Varsayılan olarak, Form1 oluşturulur.
- 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: 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: - Projeyi çalıştırın. Form1'ı yüklendikten sonra düğmesini tıklatın. Derleyici hatalarını birkaç aldığınız dikkat edin.
- 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
- Oluşturma, yeniden tıklatın. Derleme başarılı olması gerekir.
- Ç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. - 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.
VBCodeProvider sınıfı
http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.vbcodeprovider.aspx
(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
(http://msdn.microsoft.com/en-us/library/system.codedom.compiler.icodecompiler(VS.71).aspx)
Makale numarası: 304654 - Son Gözden Geçirme: 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
| kbmt kbvs2005applies kbvs2005swept kbbcl kbcompiler kbhowto kbprod2web KB304654 KbMttr |
Otomatik TercümeÖ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
(http://support.microsoft.com/kb/304654/en-us/
)