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

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
Đố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
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 CompilerResultsparameters.GenerateExecutable = Trueparameters.OutputAssembly = Outputresults = 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   NextEnd 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:

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 OnImports System.CodeDom.CompilerPublic 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 SubEnd 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: Để 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:
  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 SystemModule Module1    Sub Main()        Console.WriteLine("Hello World!")        Console.WriteLine("Press ENTER")        Console.ReadLine()    End SubEnd 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.
ICodeCompiler CSharpCodeProvider CompilerParameters

Cảnh báo: Bài viết này được dịch tự động

Thuộc tính

ID Bài viết: 304654 - Xem lại Lần cuối: 08/27/2011 20:47:00 - Bản sửa đổi: 2.0

Microsoft .NET Framework 1.0, Microsoft Visual Basic 2005, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition

  • kbvs2005applies kbvs2005swept kbbcl kbcompiler kbhowto kbprod2web kbmt KB304654 KbMtvi
Phản hồi