Jak programově pomocí kompilátoru Visual Basic .NET nebo Visual Basic 2005 kompilace kódu

Překlady článku Překlady článku
ID článku: 304654 - Produkty, které se vztahují k tomuto článku.
Microsoft Visual C# .NET verzi tohoto článku naleznete 304655.

Tento článek se týká následujícího oboru názvů knihovny tříd technologie Microsoft .NET Framework:
  • System.CodeDom.Compiler
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

.NET Framework zpřístupní tříd, které umožňují přístup pomocí programu Visual Basic .NET nebo kompilátoru jazyka Visual Basic 2005. Může to také být užitečné, pokud chcete psát vlastní kód kompilace nástroje. Tento článek obsahuje ukázkový kód, který umožňuje kompilace kódu ze zdrojového textu. Aplikace umožňuje buď pouze vytvořit spustitelný soubor nebo sestavení spustitelného souboru a jeho spuštění. Chyby, které se vyskytnou během kompilace jsou zobrazeny ve formuláři.

Další informace

Krok 1: požadavky

  • Visual Studio .NET nebo Visual Studio 2005
  • Jazyk kompilátoru Visual Basic .NET nebo Visual Basic 2005 jazyk kompilátoru

Krok 2: Jak programová kompilace kódu

.NET Framework poskytuje rozhraní provádění kompilátor ICodeCompiler. Třída VBCodeProvider implementuje toto rozhraní a poskytuje přístup k instance Generátor kódu jazyka a kód kompilátoru. Následující příklad vytvoří instanci VBCodeProvider a používá získat odkaz na rozhraní ICodeCompiler.

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

Jakmile odkaz ICodeCompiler rozhraní, můžete použít ke kompilaci zdrojový kód. Předat parametry kompilátoru pomocí třídy CompilerParameters. Zde je příklad:
Dim parameters As New CompilerParameters()
Dim results As CompilerResults

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

Kód výše používá objekt CompilerParameters zjistit kompilátor, které chcete generovat spustitelný soubor (nikoli na DLL) a chcete výstup výsledné sestavení na disk. Volání CompileAssemblyFromSource je kde získává kompilován vaše sestavení. Tato metoda trvá parametry objektu a zdrojového kódu je řetězec. Jakmile je kompilace kódu můžete zkontrolovat naleznete, pokud byly všechny chyby kompilace. Používáme vrácená hodnota z CompileAssemblyFromSource, kterým je objekt CompilerResults. Tento objekt obsahuje kolekci chyb, které obsahuje chyby, ke kterým došlo během kompilace.
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

				

Existují další možnosti pro kompilaci například kompilace ze souboru. Můžete se také dávkové kompilace, což znamená kompilovat více souborů nebo zdrojů současně. Další informace o těchto tříd je k dispozici na webu MSDN online:
http://msdn.microsoft.com/en-us/default.aspx

Krok 3: Ukázka Step-by-Step

  1. Vytvořit nové Visual Basic .NET nebo Visual Basic 2005 Windows aplikaci. Jako výchozí je vytvořen formulář Form1.
  2. V okně zobrazení kódu Form1 všechny stávající text nahradit následující kód:
    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
    					
    Poznámka kód by měl být změněn Visual Basic 2005. Pokud vytvoříte nový formulář s názvem Form1 Visual Basic 2005 máte souboru Form1.vb pro váš kód a Form1.Designer.vb soubor, který obsahuje automaticky generovaná součást. Návrhář model Windows Forms používá klíčové slovo částečné implementace Form1 rozdělit do dvou samostatných souborů. To zabrání kód generovány Návrhář právě spolu s kódu direktivami. Další informace o vylepšení jazyka Visual Basic 2005 naleznete na následujícím webu:
    http://msdn2.microsoft.com/en-us/library/ms379584(vs.80).aspx
    Další informace o částečné třídy a Návrhář model Windows Forms naleznete na následujícím webu:
    http://msdn2.microsoft.com/en-us/library/ms171843.aspx
  3. Spustit projektu. Po načtení Form1 klepněte na tlačítko Sestavit. Všimněte si získat několika chyby kompilátoru.
  4. Dále zkopírujte následující kód do textového pole nahradit existující text:
    Imports System
    
    Module Module1
    
        Sub Main()
            Console.WriteLine("Hello World!")
            Console.WriteLine("Press ENTER")
            Console.ReadLine()
        End Sub
    
    End Module
    					
  5. Znovu klepněte na tlačítko Sestavit. Kompilace by měl být úspěšný.
  6. Klepněte na příkaz Spustit a bude kód kompilovat a spustit výsledné spustitelný soubor. Kompilace vytvoří spustitelný soubor s názvem "Out.exe" ve stejné složce jako aplikace jsou spuštěny.

    Poznámka: Upravte kód v textovém poli zobrazit různé kompilátor chyby. Například jeden závorka odstranit a znovu sestavit kód.
  7. Nakonec upravte kód v textovém poli na výstup jiného řádku textu okna konzoly. Klepněte na tlačítko Zobrazit výstup Spustit.

Odkazy

Třída VBCodeProvider
http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.vbcodeprovider.aspx

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

Vlastnosti

ID článku: 304654 - Poslední aktualizace: 11. května 2007 - Revize: 4.7
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft .NET Framework 1.0
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Klíčová slova: 
kbmt kbvs2005applies kbvs2005swept kbbcl kbcompiler kbhowto kbprod2web KB304654 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:304654

Dejte nám zpětnou vazbu

 

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