Làm th? nào đ? l?p tr?nh biên d?ch m? b?ng cách s? d?ng Visual Basic.Tr?nh biên d?ch NET ho?c Visual Basic 2005

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 304654 - Xem s?n ph?m mà bài này áp d?ng vào.
Đ?i v?i m?t Microsoft Visual C#.NET Phiên b?n này vi?t, xem 304655.

Bài vi?t này đ? c?p Microsoft sau.Không gian tên thư vi?n l?p c?a NET Framework:
  • System.CodeDom.Compiler
Bung t?t c? | Thu g?n t?t c?

? Trang này

TÓM T?T

Các.NET Framework cho th?y nhi?u l?p h?c mà cho phép b?n l?p tr?nh truy c?p Visual Basic.NET ho?c Visual Basic 2005 ngôn ng? biên d?ch. Đi?u này có th? c?ng có ích n?u b?n mu?n ghi m? biên d?ch ti?n ích c?a riêng b?n. Đi?u này bài vi?t cung c?p m? m?u cho phép b?n biên d?ch m? t? m?t văn b?n ngu?n. Các ?ng d?ng cho phép b?n ho?c ch? c?n xây d?ng t?p tin th?c thi ho?c xây d?ng t?p tin th?c thi và ch?y nó. B?t k? l?i nào x?y ra trong quá tr?nh biên so?n đư?c hi?n th? trên các h?nh th?c.

THÔNG TIN THÊM

Bư?c 1: yêu c?u

  • Visual Studio.NET ho?c Visual Studio 2005
  • Visual Basic.Ngôn ng? NET Compiler ho?c biên d?ch ngôn ng? Visual Basic 2005

Bư?c 2: Làm th? nào đ? l?p tr?nh biên d?ch m?

Các.NET Framework cung c?p th?c hi?n biên d?ch ICodeCompiler giao di?n. VBCodeProvider l?p th?c hi?n giao di?n này và cung c?p truy c?p đ? th? hi?n c?a Visual Basic m? máy phát đi?n và biên d?ch m?. Các sau m?u t?o ra m?t th? hi?n c?a VBCodeProvider và s? d?ng nó đ? có đư?c m?t tham chi?u đ?n m?t giao di?n ICodeCompiler.

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

M?t khi b?n có m?t tham chi?u đ?n m?t giao di?n ICodeCompiler, b?n có th? s? d?ng nó đ? biên d?ch m? ngu?n c?a b?n. B?n g?i tham s? cho tr?nh biên d?ch c?a b?ng cách s? d?ng các CompilerParameters l?p h?c. Đây là m?t ví d?:
Dim parameters As New CompilerParameters()
Dim results As CompilerResults

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

M? ? trên s? d?ng đ?i tư?ng CompilerParameters đ? cho các tr?nh biên d?ch b?n mu?n t?o ra m?t t?p tin th?c thi (như trái ngư?c v?i m?t DLL) và r?ng b?n mu?n đ?nh đ?u ra h?i đ?ng k?t qu? vào đ?a. Các cu?c g?i đ?n CompileAssemblyFromSource là nơi c?a b?n l?p ráp đư?c biên so?n. Phương pháp này m?t c?a b?n các tham s? đ?i tư?ng và m? ngu?n, là m?t chu?i. M?t khi b?n biên d?ch c?a b?n M? b?n có th? ki?m tra xem n?u có b?t k? l?i biên so?n. Chúng tôi s? d?ng các tr? v? giá tr? t? CompileAssemblyFromSource, đó là m?t CompilerResults đ?i tư?ng. Đ?i tư?ng này ch?a m?t b? sưu t?p l?i, ch?a b?t k? l?i x?y ra trong vi?c biên d?ch.
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

				

Có nh?ng l?a ch?n khác cho biên d?ch, ch?ng h?n như biên d?ch t? m?t t?p tin. B?n c?ng có th? hàng lo?t biên d?ch, có ngh?a là b?n có th? biên d?ch nhi?u file ho?c ngu?n cùng m?t lúc. Thêm thông tin v? các l?p h?c có s?n trên MSDN tr?c tuy?n:
http://MSDN.Microsoft.com/en-US/Default.aspx

Bư?c 3: T?ng bư?c m?u

  1. T?o ra m?t m?i Visual Basic.NET ho?c ?ng d?ng Windows Visual Basic 2005. Form1 đư?c t?o ra theo m?c đ?nh.
  2. Trong c?a s? Code View Form1, thay th? t?t c? các hi?n có văn b?n v?i đo?n m? sau:
    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
    					
    Chú ý M? nên đư?c thay đ?i vào năm 2005 Visual Basic. N?u b?n t?o m?t h?nh th?c m?i đư?c đ?t tên Form1 vào năm 2005 Visual Basic, b?n có m?t t?p tin Form1.vb cho m? c?a b?n và m?t t?p tin Form1.Designer.vb có ch?a m?t ph?n t? đ?ng t?o ra. Các nhà thi?t k? các h?nh th?c Windows s? d?ng các t? khóa m?t ph?n đ? phân chia th?c hi?n Form1 thành hai t?p tin riêng bi?t. Đi?u này ngăn c?n các nhà thi?t k? phát ra m? đư?c xen k? v?i m? c?a b?n. Đ? bi?t thêm chi ti?t v? các ph? ki?n ngôn ng? Visual Basic 2005, ghé thăm Web site sau c?a Microsoft:
    http://msdn2.Microsoft.com/en-US/Library/ms379584 (vs.80) .aspx
    Đ? bi?t thêm chi ti?t v? các l?p h?c ph?n và các nhà thi?t k? các h?nh th?c Windows, ghé thăm Web site sau c?a Microsoft:
    http://msdn2.Microsoft.com/en-US/Library/ms171843.aspx
  3. Ch?y các d? án. Sau khi Form1 t?i, b?m các Xây d?ng nút. Nh?n th?y r?ng b?n nh?n đư?c m?t vài tr?nh biên d?ch l?i.
  4. Ti?p theo, copy đo?n m? sau vào h?p, thay th? b?t k? văn b?n hi?n có:
    Imports System
    
    Module Module1
    
        Sub Main()
            Console.WriteLine("Hello World!")
            Console.WriteLine("Press ENTER")
            Console.ReadLine()
        End Sub
    
    End Module
    					
  5. Nh?p vào Xây d?ng m?t l?n n?a. Biên d?ch nên đư?c thành công.
  6. Nh?p vào Ch?y và nó s? biên d?ch m? và ch?y t?p tin th?c thi k?t qu? t?p tin. Vi?c biên d?ch t?o ra m?t t?p tin th?c thi đư?c g?i là "Out.exe" trong cùng m?t thư m?c như ?ng d?ng mà b?n đang ch?y.

    CHÚ Ý: B?n có th? s?a đ?i m? trong h?p đ? xem khác nhau tr?nh biên d?ch l?i. Ví d?, xóa m?t trong ngo?c đơn và xây d?ng l?i các M?.
  7. Cu?i cùng, thay đ?i m? trong h?p đ? s?n lư?ng khác d?ng văn b?n vào c?a s? giao di?n đi?u khi?n. Nh?p vào Ch?y đ? xem các đ?u ra.

THAM KH?O

VBCodeProvider l?p
http://MSDN.Microsoft.com/en-US/Library/Microsoft.VisualBasic.vbcodeprovider.aspx

Giao di?n ICodeCompiler
http://MSDN.Microsoft.com/en-US/Library/System.codedom.compiler.icodecompiler (VS.71) .aspx

Thu?c tính

ID c?a bài: 304654 - L?n xem xét sau cùng: 27 Tháng Tám 2011 - Xem xét l?i: 2.0
Áp d?ng
  • Microsoft .NET Framework 1.0
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
T? khóa: 
kbvs2005applies kbvs2005swept kbbcl kbcompiler kbhowto kbprod2web kbmt KB304654 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:304654

Cung cấp Phản hồi

 

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