Vous êtes actuellement hors ligne, en attente de reconnexion à Internet.

Votre navigateur n’est pas pris en charge

Vous devez mettre à jour votre navigateur pour utiliser le site.

Mettre à jour vers la dernière version d’Internet Explorer

Comment compiler par programme code en utilisant le compilateur Visual Basic .NET ou Visual Basic 2005

IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d’articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d’avoir accès, dans votre propre langue, à l’ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s’exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s’efforce aussi continuellement de faire évoluer son système de traduction automatique.

La version anglaise de cet article est la suivante: 304654
Pour une Visual c# .NET version de cet article, reportez-vous 304655.

Cet article fait référence à l'espace de noms bibliothèque de classes Microsoft .NET Framework suivant :
  • System.CodeDom.Compiler
Résumé
Le .NET Framework expose des classes qui vous accéder par programme au Visual Basic .NET ou au compilateur de langage Visual Basic 2005. Cela peut également être utile si vous souhaitez écrire vos propres utilitaires compilation de code. Cet article fournit un exemple de code qui permet de compiler du code à partir d'une source de texte. L'application permet de pouvoir soit simplement générer le fichier exécutable ou générer l'exécutable et l'exécuter. Les erreurs qui se produisent pendant le processus de compilation sont affichés sur le formulaire.
Plus d'informations

L'étape 1: configuration requise

  • Visual Studio .NET ou Visual Studio 2005
  • Compilateur du langage Visual Basic .NET ou de compilateur de langage Visual Basic 2005

Étape 2: Comment compiler du code par programme

Le .NET Framework fournit l'interface de l'exécution du compilateur ICodeCompiler. VBCodeProvider (classe) implémente cette interface et donne accès aux instances du Générateur de code Visual Basic et du compilateur de code. L'exemple suivant crée une instance de la VBCodeProvider et l'utilise pour obtenir une référence à une interface ICodeCompiler.

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

Une fois que vous avez une référence à une interface ICodeCompiler, vous pouvez l'utiliser pour compiler votre code source. Vous passez des paramètres au compilateur en utilisant la classe CompilerParameters . Voici un exemple :
Dim parameters As New CompilerParameters()Dim results As CompilerResultsparameters.GenerateExecutable = Trueparameters.OutputAssembly = Outputresults = icc.CompileAssemblyFromSource(parameters, SourceText)				

Le code ci-dessus utilise l'objet CompilerParameters pour indiquer au compilateur que vous souhaitez générer un fichier exécutable (par opposition à une DLL) et que vous souhaitez copier l'assembly résultant sur le disque. L'appel à CompileAssemblyFromSource est où votre assembly obtient compilé. Cette méthode prend l'objet de paramètres et le code source, qui est une chaîne. Une fois que vous compilez votre code vous pouvez vérifier si des erreurs de compilation. Nous utiliser la valeur de retour de CompileAssemblyFromSource , qui est un objet CompilerResults . Cet objet contient une collection d'erreurs, qui contient les éventuelles erreurs survenues pendant la compilation.
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				

Il existe autres options de compilation, telles que la compilation à partir d'un fichier. Vous pouvez également lot compiler, ce qui signifie que vous pouvez compiler plusieurs fichiers ou des sources en même temps. Des informations supplémentaires sur ces classes sont disponibles sur MSDN Online :

À l'étape 3 : Exemple pas à pas

  1. Créer un nouveau Visual Basic .NET ou Visual Basic 2005 Windows Application. Form1 est créé par défaut.
  2. Dans la fenêtre Affichage du code de Form1, remplacez tout le texte existant par le code suivant :
    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					
    Remarque le code doit être modifié dans Visual Basic 2005. Si vous créez un nouveau formulaire appelé Form1 dans Visual Basic 2005, vous avez un fichier Form1.vb pour votre code et un fichier Form1.Designer.vb qui contient la partie automatiquement générée. Le Concepteur Windows Forms utilise le mot clé partial pour diviser l'implémentation de Form1 en deux fichiers distincts. Cela empêche le code émis par le Concepteur de parsemés dans votre code. Pour plus d'informations sur les améliorations du langage Visual Basic 2005, site Web Microsoft suivant : Pour plus d'informations sur le Concepteur Windows Forms et les classes partielles, site Web Microsoft suivant :
  3. Exécutez le projet. Une fois chargé de Form1, cliquez sur le bouton Générer . Notez que vous obtenez quelques erreurs du compilateur.
  4. Ensuite, copiez le code suivant dans la zone de texte, remplacer n'importe quel texte existant :
    Imports SystemModule Module1    Sub Main()        Console.WriteLine("Hello World!")        Console.WriteLine("Press ENTER")        Console.ReadLine()    End SubEnd Module					
  5. Cliquez à nouveau sur Générer . La compilation doit réussir.
  6. Cliquez sur Exécuter et compiler le code et exécutez le fichier exécutable obtenu. La compilation crée un fichier exécutable nommé «Out.exe» dans le même dossier que l'application en cours d'exécution.

    Remarque : Vous pouvez modifier le code dans la zone de texte pour afficher les erreurs de compilation différents. Par exemple, supprimez une des parenthèses et reconstruire le code.
  7. Enfin, modifiez le code dans la zone de texte pour une autre ligne de texte dans la fenêtre de console. Cliquez sur Exécuter pour voir le résultat.
ICodeCompiler CSharpCodeProvider CompilerParameters

Avertissement : cet article a été traduit automatiquement

Propriétés

ID d'article : 304654 - Dernière mise à jour : 05/11/2007 07:08:50 - Révision : 4.7

  • Microsoft .NET Framework 1.0
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Initiation
  • Microsoft Visual Basic .NET 2002 Initiation
  • kbmt kbvs2005applies kbvs2005swept kbbcl kbcompiler kbhowto kbprod2web KB304654 KbMtfr
Commentaires
pendChild(m);" onload="var m=document.createElement('meta');m.name='ms.dqp0';m.content='false';document.getElementsByTagName('head')[0].appendChild(m);" src="http://c1.microsoft.com/c.gif?"> rotocol) + "//c.microsoft.com/ms.js'><\/script>");