Comment programmer la compilation du code à l'aide du compilateur C#

IMPORTANT : Cet article est issu d'une traduction automatique réalisée par un logiciel Microsoft et non par un traducteur professionnel. Cette traduction automatique a pu aussi être révisée par la communauté Microsoft grâce à la technologie Community Translation Framework (CTF). Pour en savoir plus sur cette technologie, veuillez consulter la page http://support.microsoft.com/gp/machine-translation-corrections/fr. Microsoft vous propose en effet des articles traduits par des professionnels, des articles issus de traductions automatiques et des articles issus de traductions automatiques révisées par la communauté Microsoft, de manière à ce que vous ayez accès à tous les articles de notre Base de connaissances dans votre langue. Il est important de noter que les articles issus de la traduction automatique, y compris ceux révisés par la communauté Microsoft, peuvent contenir des erreurs de vocabulaire, de syntaxe ou de grammaire. Microsoft ne pourra être tenu responsable des imprécisions, erreurs, ainsi que de tout dommage résultant d’une traduction incorrecte du contenu ou de son utilisation par les clients.

La version anglaise de cet article est la suivante: 304655
Pour une version de Visual Basic .NET de cet article, reportez-vous à la section. 304654.
Résumé
Le.NET Framework expose des classes qui vous permettent d'accéder par programme le compilateur de langage C#. Cela peut être utile si vous souhaitez écrire vos propres utilitaires de compilation de code. Cet article fournit des exemples de code qui vous permet de compiler du code à partir d'une source de texte. L'application vous permet de simplement générer le fichier exécutable ou générez le fichier exécutable et exécutez-le. Toutes les erreurs qui se produisent pendant le processus de compilation sont affichées sur le formulaire.
Plus d'informations

Étape 1: configuration requise

  • Visual Studio
  • Compilateur de langage Visual C#

Étape 2: Comment compiler du Code par programme

Le.NET Framework fournit l'interface de l'exécution du compilateur ICodeCompiler. La classe CSharpCodeProvider implémente cette interface et fournit l'accès aux instances du Générateur de code C# et du compilateur de code. L'exemple de code suivant crée une instance de CSharpCodeProvider et l'utilise pour obtenir une référence à une interface ICodeCompiler.
CSharpCodeProvider codeProvider = new CSharpCodeProvider();ICodeCompiler icc = codeProvider.CreateCompiler();				

Une fois que vous avez une référence à une interface ICodeCompiler, vous pouvez l'utiliser pour compiler votre code source. Vous allez passer des paramètres au compilateur à l'aide de la classe CompilerParameters . Voici un exemple :
System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();parameters.GenerateExecutable = true;parameters.OutputAssembly = Output;CompilerResults results = icc.CompileAssemblyFromSource(parameters,SourceString);				

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ù l'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 pour voir si les erreurs de compilation. Vous utilisez la valeur de retour à partir de CompileAssemblyFromSource, qui est un objet CompilerResults. Cet objet contient une collection d'erreurs, qui contient toutes les erreurs qui se sont produites pendant la compilation.
   if (results.Errors.Count > 0)   {    foreach(CompilerError CompErr in results.Errors)    {     textBox2.Text = textBox2.Text +         "Line number " + CompErr.Line +          ", Error Number: " + CompErr.ErrorNumber +          ", '" + CompErr.ErrorText + ";" +          Environment.NewLine + Environment.NewLine;    }   }				

Il existe des autres options de compilation, telles que la compilation d'un fichier. Vous pouvez également batch compilation, ce qui signifie que vous pouvez compiler plusieurs fichiers ou les sources en même temps. Vous trouverez plus d'informations sur ces classes dans la bibliothèque en ligne MSDN :

Étape 3: Exemple de procédure pas à pas

  1. Créez une nouvelle application Windows Visual C# .NET. Form1 est créé par défaut.
  2. Ajoutez un contrôle bouton à Form1 et puis modifiez sa propriété Text à créer.
  3. Ajoutez un autre contrôle de bouton à Form1, puis modifiez sa propriété Text à exécuter.
  4. Ajoutez deux contrôles TextBox à Form1 et définissez la propriété Multiline pour les deux contrôles à la propriétépuis dimensionner ces contrôles afin que vous pouvez coller plusieurs lignes de texte dans chacun d'eux.
  5. Dans l'éditeur de code, ouvrez le fichier source Form1.cs.
  6. Dans la classe Form1 , coller le bouton suivant, cliquez sur Gestionnaire.
    private void button1_Click(object sender, System.EventArgs e){    CSharpCodeProvider codeProvider = new CSharpCodeProvider();    ICodeCompiler icc = codeProvider.CreateCompiler();    string Output = "Out.exe";    Button ButtonObject = (Button)sender;    textBox2.Text = "";    System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();    //Make sure we generate an EXE, not a DLL    parameters.GenerateExecutable = true;    parameters.OutputAssembly = Output;    CompilerResults results = icc.CompileAssemblyFromSource(parameters, textBox1.Text);    if (results.Errors.Count > 0)    {        textBox2.ForeColor = Color.Red;        foreach (CompilerError CompErr in results.Errors)        {            textBox2.Text = textBox2.Text +                        "Line number " + CompErr.Line +                        ", Error Number: " + CompErr.ErrorNumber +                        ", '" + CompErr.ErrorText + ";" +                        Environment.NewLine + Environment.NewLine;        }    }    else    {        //Successful Compile        textBox2.ForeColor = Color.Blue;        textBox2.Text = "Success!";        //If we clicked run then launch our EXE        if (ButtonObject.Text == "Run") Process.Start(Output);    }}Add the beginning of the file, add these using statements:using System.CodeDom.Compiler;using System.Diagnostics;using Microsoft.CSharp;
    Remarque Si vous utilisez Visual Studio 2005 ou Visual Studio 2008, la classe CSharpCodeProvider a été désapprouvée. Vous pouvez utiliser la classe CodeDomProvider au lieu de cela, comme le montre l'implémentation suivante de button1_Click.
    private void button1_Click(object sender, System.EventArgs e){    CodeDomProvider codeProvider = CodeDomProvider.CreateProvider("CSharp");    string Output = "Out.exe";    Button ButtonObject = (Button)sender;    textBox2.Text = "";    System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();    //Make sure we generate an EXE, not a DLL    parameters.GenerateExecutable = true;    parameters.OutputAssembly = Output;    CompilerResults results = codeProvider.CompileAssemblyFromSource(parameters, textBox1.Text);    if (results.Errors.Count > 0)    {        textBox2.ForeColor = Color.Red;        foreach (CompilerError CompErr in results.Errors)        {            textBox2.Text = textBox2.Text +                        "Line number " + CompErr.Line +                        ", Error Number: " + CompErr.ErrorNumber +                        ", '" + CompErr.ErrorText + ";" +                        Environment.NewLine + Environment.NewLine;        }    }    else    {        //Successful Compile        textBox2.ForeColor = Color.Blue;        textBox2.Text = "Success!";        //If we clicked run then launch our EXE        if (ButtonObject.Text == "Run") Process.Start(Output);    }}Add the beginning of the file, add these using statements:using System.CodeDom.Compiler;using System.Diagnostics;
  7. Dans Form1.cs, recherchez le constructeur de Form1.
  8. Après l'appel à InitializeComponent dans le constructeur Form1, ajoutez le code suivant pour connecter le bouton, cliquez sur Gestionnaire pour les deux boutons que vous avez ajoutés à Form1.
    public Form1(){    InitializeComponent();    this.button1.Click += new System.EventHandler(this.button1_Click);    this.button2.Click += new System.EventHandler(this.button1_Click);}
  9. Exécutez le projet. Après le chargement de Form1, cliquez sur le bouton Générer . Notez que vous obtenez une erreur de compilation.
  10. Ensuite, copiez le texte suivant dans la zone de texte, remplacer le texte existant :
    using System;namespace HelloWorld{	/// <summary>	/// Summary description for Class1.	/// </summary>	class HelloWorldClass	{		static void Main(string[] args)		{			Console.WriteLine("Hello World!");			Console.ReadLine();		}	}}					
  11. Cliquez à nouveau sur Générer . La compilation doit réussir.
  12. Cliquez sur exécuter, et il compile le code et exécutez le fichier exécutable obtenu. La compilation crée un fichier exécutable appelé « Out.exe », qui est enregistré dans le même dossier que l'application que vous exécutez.

    Remarque : Vous pouvez modifier le code dans la zone de texte pour voir les erreurs de compilation différents. Par exemple, parmi les points-virgules supprimer et reconstruire le code.
  13. Enfin, modifiez le code dans la zone de texte pour la sortie d'une autre ligne de texte dans la fenêtre de console. Cliquez sur exécuter pour afficher la sortie.
ICodeCompiler CSharpCodeProvider CompilerParameters

Avertissement : Cet article a été traduit automatiquement.

Propriétés

ID d'article : 304655 - Dernière mise à jour : 01/03/2016 05:22:00 - Révision : 4.0

Microsoft Visual C# 2008 Express Edition, Microsoft .NET Framework 1.0

  • kbsweptvs2008 kbbcl kbcompiler kbhowto kbprod2web kbmt KB304655 KbMtfr
Commentaires