Informatie over het programmatisch code compileren met behulp van Visual Basic.NET of Visual Basic 2005-compiler

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 304654 - Bekijk de producten waarop dit artikel van toepassing is.
Voor een Microsoft Visual c#.Net werk versie van dit artikel, Zie304655.

In dit artikel wordt verwezen naar de volgende Microsoft.NET Framework Class Library-naamruimte:
  • System.CodeDom.compiler
Alles uitklappen | Alles samenvouwen

Op deze pagina

Samenvatting

Het.NET Framework bevat klassen waarmee u via programmering toegang krijgen tot het Visual Basic.NET of Visual Basic 2005 language compiler. Dit kan ook handig zijn als u wilt uw eigen programma's compileren van code schrijven. Dit artikel bevat voorbeeldcode waarmee u te compileren code uit een tekst bron. De toepassing kunt u alleen het uitvoerbaar bestand bouwen of bouwen het uitvoerbare bestand en voer het uit. Fouten die tijdens het compileren optreden op het formulier worden weer gegeven.

Meer informatie

Stap 1: vereisten

  • Visual Studio.NET of Visual Studio 2005
  • In Visual Basic.NETTO Language Compiler of Visual Basic 2005 Language Compiler

Stap 2: Het programma Code compileren

Het..NET Framework biedt de compiler uitvoering ICodeCompiler interface. VBCodeProvider klasse implementeert deze interface en biedt toegang tot exemplaren van de Visual Basic-code generator en code compilatie. Het volgende voorbeeld maakt een instantie van de VBCodeProvider en wordt gebruikt om een verwijzing naar een ICodeCompiler interface.

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

Nadat u een verwijzing naar een ICodeCompiler interface hebt, kunt u gebruiken voor het compileren van de broncode. U doorgeven parameters aan de compiler door met behulp van deCompilerParametersklasse. Hier volgt een voorbeeld:
Dim parameters As New CompilerParameters()
Dim results As CompilerResults

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

De bovenstaande code wordt het object CompilerParameters gebruikt om de compiler die u wilt genereren een uitvoerbaar bestand (in tegenstelling tot een DLL-bestand) en u wilt de resulterende assembly op schijf uitvoer. De aanroepCompileAssemblyFromSourceis waar de assembly wordt gecompileerd. Deze methode heeft de parameters object en de broncode, een teken reeks. Zodra u uw u controleren kunt om te zien of er compilatie fouten code. We gebruiken de retour waarde vanCompileAssemblyFromSource, die eenCompilerResultsobject. Dit object bevat een collectie errors, waarin eventuele fouten die tijdens het compileren.
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

				

Er zijn andere opties voor het compileren, zoals de opstelling van een bestand. U kunt ook compileren, wat betekent dat u meerdere bestanden kunt compileren batch of bronnen tegelijk. Meer informatie over deze klassen op MSDN Online:
http://msdn.Microsoft.com/en-us/default.aspx

Stap 3: Stapsgewijs voorbeeld

  1. Maak een nieuwe Visual Basic.NET of Visual Basic 2005 Windows-toepassing. Formulier1 Standaard wordt gemaakt.
  2. Vervang alle in de codeweergave venster van Formulier1, het bestaande tekst met de volgende code:
    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
    					
    OpmerkingDe code moet worden gewijzigd in Visual Basic 2005. Als u een nieuw formulier met de naam Form1 in Visual Basic 2005 maakt, hebt u een Form1. vb-bestand voor uw code en een Form1.Designer.vb bestand dat de automatisch gegenereerde onderdeel bevat. De Windows Forms Designer de gedeeltelijke tref woord wordt gebruikt om de uitvoering van Form1 opsplitsen in twee afzonderlijke bestanden. Dit voorkomt dat de code designer uitgestoten wordt afgewisseld met uw code. Ga naar de volgende Microsoft-website voor meer informatie over de verbeteringen van de taal Visual Basic 2005:
    (vs.80) http://msdn2.Microsoft.com/en-us/library/ms379584. aspx
    Ga naar de volgende Microsoft-website voor meer informatie over gedeeltelijke klassen en de Windows Forms Designer:
    http://msdn2.Microsoft.com/en-us/library/ms171843.aspx
  3. Het project wordt uitgevoerd. Nadat Formulier1 is geladen, klikt u op deBuildknop. U ziet dat u een aantal compiler krijgt fouten.
  4. Kopieer de volgende code in het tekstvak vervangen bestaande tekst:
    Imports System
    
    Module Module1
    
        Sub Main()
            Console.WriteLine("Hello World!")
            Console.WriteLine("Press ENTER")
            Console.ReadLine()
        End Sub
    
    End Module
    					
  5. Klik opBuildopnieuw. De compilatie moet werken.
  6. Klik opUitvoerenen wordt de code te compileren en uitvoeren van het exe-bestand bestand. Het compileren maakt een uitvoerbaar bestand met de naam "Out.exe" in dezelfde map Als de toepassing waarmee u werkt.

    OPMERKING:U kunt de code in het tekstvak om te zien andere compiler wijzigen fouten. Verwijder bijvoorbeeld een van de haakjes en het opnieuw opbouwen van de code.
  7. Tenslotte de code in het tekstvak een andere uitvoer wijzigen regel tekst naar het consolevenster. Klik opUitvoerenvoor de uitvoer.

Referenties

VBCodeProvider, klasse
http://msdn.Microsoft.com/en-us/library/Microsoft.VisualBasic.vbcodeprovider.aspx

Interface ICodeCompiler
(VS.71) http://msdn.Microsoft.com/en-us/library/System.CodeDom.compiler.icodecompiler. aspx

Eigenschappen

Artikel ID: 304654 - Laatste beoordeling: maandag 28 februari 2011 - Wijziging: 2.0
De informatie in dit artikel is van toepassing op:
  • Microsoft .NET Framework 1.0
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Trefwoorden: 
kbvs2005applies kbvs2005swept kbbcl kbcompiler kbhowto kbprod2web kbmt KB304654 KbMtnl
Automatisch vertaald artikel
BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.
De Engelstalige versie van dit artikel is de volgende:304654

Geef ons feedback

 

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