CSharpCodeProvider Classe

Définition

Fournit l’accès aux instances du générateur de code C# et du compilateur de code.

public ref class CSharpCodeProvider : System::CodeDom::Compiler::CodeDomProvider
public class CSharpCodeProvider : System.CodeDom.Compiler.CodeDomProvider
type CSharpCodeProvider = class
    inherit CodeDomProvider
Public Class CSharpCodeProvider
Inherits CodeDomProvider
Héritage

Exemples

L’exemple suivant utilise le fournisseur de code C# ou Visual Basic pour compiler un fichier source. L’exemple vérifie l’extension de fichier d’entrée et utilise la compilation correspondante CSharpCodeProvider ou VBCodeProvider pour la compilation. Le fichier d’entrée est compilé dans un fichier exécutable et toutes les erreurs de compilation sont affichées dans la console.

Important

Les méthodes CompileAssemblyFrom* ne sont pas prises en charge sur .NET Core et .NET 5+. Cet exemple s’exécute uniquement sur .NET Framework.

using System;
using System.IO;
using System.Globalization;
using System.CodeDom.Compiler;
using System.Text;
using Microsoft.CSharp;
using Microsoft.VisualBasic;

namespace CodeProviders
{
    class CompileSample
    {
        [STAThread]
        static void Main(string[] args)
        {
            if (args.Length > 0)
            {
                //  First parameter is the source file name.
                if (File.Exists(args[0]))
                {
                    CompileExecutable(args[0]);
                }
                else
                {
                    Console.WriteLine("Input source file not found - {0}",
                        args[0]);
                }
            }
            else
            {
                Console.WriteLine("Input source file not specified on command line!");
            }
        }

        public static bool CompileExecutable(String sourceName)
        {
            FileInfo sourceFile = new FileInfo(sourceName);
            CodeDomProvider provider = null;
            bool compileOk = false;

            // Select the code provider based on the input file extension.
            if (sourceFile.Extension.ToUpper(CultureInfo.InvariantCulture) == ".CS")
            {
                provider = CodeDomProvider.CreateProvider("CSharp");
            }
            else if (sourceFile.Extension.ToUpper(CultureInfo.InvariantCulture) == ".VB")
            {
                provider = CodeDomProvider.CreateProvider("VisualBasic");
            }
            else
            {
                Console.WriteLine("Source file must have a .cs or .vb extension");
            }

            if (provider != null)
            {

                // Format the executable file name.
                // Build the output assembly path using the current directory
                // and <source>_cs.exe or <source>_vb.exe.

                String exeName = String.Format(@"{0}\{1}.exe",
                    System.Environment.CurrentDirectory,
                    sourceFile.Name.Replace(".", "_"));

                CompilerParameters cp = new CompilerParameters();

                // Generate an executable instead of
                // a class library.
                cp.GenerateExecutable = true;

                // Specify the assembly file name to generate.
                cp.OutputAssembly = exeName;

                // Save the assembly as a physical file.
                cp.GenerateInMemory = false;

                // Set whether to treat all warnings as errors.
                cp.TreatWarningsAsErrors = false;

                // Invoke compilation of the source file.
                CompilerResults cr = provider.CompileAssemblyFromFile(cp,
                    sourceName);

                if(cr.Errors.Count > 0)
                {
                    // Display compilation errors.
                    Console.WriteLine("Errors building {0} into {1}",
                        sourceName, cr.PathToAssembly);
                    foreach(CompilerError ce in cr.Errors)
                    {
                        Console.WriteLine("  {0}", ce.ToString());
                        Console.WriteLine();
                    }
                }
                else
                {
                    // Display a successful compilation message.
                    Console.WriteLine("Source {0} built into {1} successfully.",
                        sourceName, cr.PathToAssembly);
                }

                // Return the results of the compilation.
                if (cr.Errors.Count > 0)
                {
                    compileOk = false;
                }
                else
                {
                    compileOk = true;
                }
            }
            return compileOk;
        }
    }
}
Imports System.IO
Imports System.Globalization
Imports System.CodeDom.Compiler
Imports System.Text
Imports Microsoft.CSharp

Namespace CodeProviders
    Class CompileSample
        <STAThread()>  _
        Public Shared Sub Main(args() As String)

            If args.Length > 0
                ' First parameter is the source file name.
                If File.Exists(args(0))
                    CompileExecutable(args(0))
                Else 
                    Console.WriteLine("Input source file not found - {0}", _
                        args(0))
                End If
            
            Else
                Console.WriteLine("Input source file not specified on command line!")
            End If
        End Sub

        Public Shared Function CompileExecutable(sourceName As String) As Boolean
            Dim sourceFile As FileInfo = New FileInfo(sourceName)
            Dim provider As CodeDomProvider = Nothing
            Dim compileOk As Boolean = False

            ' Select the code provider based on the input file extension.
            If sourceFile.Extension.ToUpper(CultureInfo.InvariantCulture) = ".CS"

                provider = CodeDomProvider.CreateProvider("CSharp")

            ElseIf sourceFile.Extension.ToUpper(CultureInfo.InvariantCulture) = ".VB"

                provider = CodeDomProvider.CreateProvider("VisualBasic")

            Else
                Console.WriteLine("Source file must have a .cs or .vb extension")
            End If

            If Not provider Is Nothing

                ' Format the executable file name.
                ' Build the output assembly path using the current directory
                ' and <source>_cs.exe or <source>_vb.exe.

                Dim exeName As String = String.Format("{0}\{1}.exe", _
                    System.Environment.CurrentDirectory, _
                    sourceFile.Name.Replace(".", "_"))

                Dim cp As CompilerParameters = new CompilerParameters()

                ' Generate an executable instead of 
                ' a class library.
                cp.GenerateExecutable = True

                ' Specify the assembly file name to generate.
                cp.OutputAssembly = exeName
    
                ' Save the assembly as a physical file.
                cp.GenerateInMemory = False
    
                ' Set whether to treat all warnings as errors.
                cp.TreatWarningsAsErrors = False
 
                ' Invoke compilation of the source file.
                Dim cr As CompilerResults = provider.CompileAssemblyFromFile(cp, _
                    sourceName)
    
                If cr.Errors.Count > 0
                    ' Display compilation errors.
                    Console.WriteLine("Errors building {0} into {1}", _
                        sourceName, cr.PathToAssembly)

                    Dim ce As CompilerError
                    For Each ce In cr.Errors
                        Console.WriteLine("  {0}", ce.ToString())
                        Console.WriteLine()
                    Next ce
                Else
                    ' Display a successful compilation message.
                    Console.WriteLine("Source {0} built into {1} successfully.", _
                        sourceName, cr.PathToAssembly)
                End If
              
                ' Return the results of the compilation.
                If cr.Errors.Count > 0
                    compileOk = False
                Else 
                    compileOk = True
                End If
            End If
            return compileOk

        End Function
    End Class
End Namespace

Remarques

Cette classe fournit des méthodes qui peuvent être utilisées pour récupérer des instances des implémentations et ICodeCompiler C#ICodeGenerator.

Note

Cette classe contient une demande de liaison et une demande d’héritage au niveau de la classe qui s’applique à tous les membres. Un SecurityException est levé lorsque l’appelant immédiat ou la classe dérivée n’a pas d’autorisation de confiance totale.

Constructeurs

Nom Description
CSharpCodeProvider()

Initialise une nouvelle instance de la classe CSharpCodeProvider.

CSharpCodeProvider(IDictionary<String,String>)

Initialise une nouvelle instance de la CSharpCodeProvider classe à l’aide des options de fournisseur spécifiées.

Propriétés

Nom Description
CanRaiseEvents

Obtient une valeur indiquant si le composant peut déclencher un événement.

(Hérité de Component)
Container

Obtient le IContainer fichier qui contient le Component.

(Hérité de Component)
DesignMode

Obtient une valeur qui indique si la Component valeur est actuellement en mode création.

(Hérité de Component)
Events

Obtient la liste des gestionnaires d’événements qui sont attachés à ce Component.

(Hérité de Component)
FileExtension

Obtient l’extension de nom de fichier à utiliser lors de la création de fichiers de code source.

LanguageOptions

Obtient un identificateur de fonctionnalités de langage.

(Hérité de CodeDomProvider)
Site

Obtient ou définit le ISite de Component.

(Hérité de Component)

Méthodes

Nom Description
CompileAssemblyFromDom(CompilerParameters, CodeCompileUnit[])

Compile un assembly basé sur les System.CodeDom arborescences contenues dans le tableau d’objets CodeCompileUnit spécifié, à l’aide des paramètres du compilateur spécifiés.

(Hérité de CodeDomProvider)
CompileAssemblyFromFile(CompilerParameters, String[])

Compile un assembly à partir du code source contenu dans les fichiers spécifiés, à l’aide des paramètres du compilateur spécifiés.

(Hérité de CodeDomProvider)
CompileAssemblyFromSource(CompilerParameters, String[])

Compile un assembly à partir du tableau de chaînes spécifié contenant du code source, à l’aide des paramètres du compilateur spécifiés.

(Hérité de CodeDomProvider)
CreateCompiler()
Obsolète.

Obtient une instance du compilateur de code C#.

CreateEscapedIdentifier(String)

Crée un identificateur d’échappement pour la valeur spécifiée.

(Hérité de CodeDomProvider)
CreateGenerator()
Obsolète.

Obtient une instance du générateur de code C#.

CreateGenerator(String)

En cas de substitution dans une classe dérivée, crée un générateur de code à l’aide du nom de fichier spécifié pour la sortie.

(Hérité de CodeDomProvider)
CreateGenerator(TextWriter)

En cas de substitution dans une classe dérivée, crée un générateur de code à l’aide de la sortie spécifiée TextWriter .

(Hérité de CodeDomProvider)
CreateObjRef(Type)

Crée un objet qui contient toutes les informations pertinentes requises pour générer un proxy utilisé pour communiquer avec un objet distant.

(Hérité de MarshalByRefObject)
CreateParser()
Obsolète.

En cas de substitution dans une classe dérivée, crée un analyseur de code.

(Hérité de CodeDomProvider)
CreateValidIdentifier(String)

Crée un identificateur valide pour la valeur spécifiée.

(Hérité de CodeDomProvider)
Dispose()

Libère toutes les ressources utilisées par le Component.

(Hérité de Component)
Dispose(Boolean)

Libère les ressources non managées utilisées par les Component ressources gérées et libère éventuellement les ressources managées.

(Hérité de Component)
Equals(Object)

Détermine si l’objet spécifié est égal à l’objet actuel.

(Hérité de Object)
GenerateCodeFromCompileUnit(CodeCompileUnit, TextWriter, CodeGeneratorOptions)

Génère du code pour l’unité de compilation Code Document Object Model (CodeDOM) spécifiée et l’envoie à l’enregistreur de texte spécifié, à l’aide des options spécifiées.

(Hérité de CodeDomProvider)
GenerateCodeFromExpression(CodeExpression, TextWriter, CodeGeneratorOptions)

Génère du code pour l’expression Code Document Object Model (CodeDOM) spécifiée et l’envoie à l’enregistreur de texte spécifié, à l’aide des options spécifiées.

(Hérité de CodeDomProvider)
GenerateCodeFromMember(CodeTypeMember, TextWriter, CodeGeneratorOptions)

Génère du code pour le membre de classe spécifié à l’aide des options du générateur de code et de l’enregistreur de texte spécifiés.

GenerateCodeFromNamespace(CodeNamespace, TextWriter, CodeGeneratorOptions)

Génère du code pour l’espace de noms Code Document Object Model (CodeDOM) spécifié et l’envoie à l’enregistreur de texte spécifié, à l’aide des options spécifiées.

(Hérité de CodeDomProvider)
GenerateCodeFromStatement(CodeStatement, TextWriter, CodeGeneratorOptions)

Génère du code pour l’instruction Code Document Object Model (CodeDOM) spécifiée et l’envoie à l’enregistreur de texte spécifié, à l’aide des options spécifiées.

(Hérité de CodeDomProvider)
GenerateCodeFromType(CodeTypeDeclaration, TextWriter, CodeGeneratorOptions)

Génère du code pour la déclaration de type Code Document Object Model (CodeDOM) spécifiée et l’envoie à l’enregistreur de texte spécifié, à l’aide des options spécifiées.

(Hérité de CodeDomProvider)
GetConverter(Type)

Obtient un TypeConverter pour le type d’objet spécifié.

GetHashCode()

Sert de fonction de hachage par défaut.

(Hérité de Object)
GetLifetimeService()

Récupère l’objet de service de durée de vie actuel qui contrôle la stratégie de durée de vie de cette instance.

(Hérité de MarshalByRefObject)
GetService(Type)

Retourne un objet qui représente un service fourni par le Component ou par son Container.

(Hérité de Component)
GetType()

Obtient la Type de l’instance actuelle.

(Hérité de Object)
GetTypeOutput(CodeTypeReference)

Obtient le type indiqué par le .CodeTypeReference

(Hérité de CodeDomProvider)
InitializeLifetimeService()

Obtient un objet de service de durée de vie pour contrôler la stratégie de durée de vie de cette instance.

(Hérité de MarshalByRefObject)
IsValidIdentifier(String)

Retourne une valeur qui indique si la valeur spécifiée est un identificateur valide pour la langue actuelle.

(Hérité de CodeDomProvider)
MemberwiseClone()

Crée une copie superficielle du Objectactuel.

(Hérité de Object)
MemberwiseClone(Boolean)

Crée une copie superficielle de l’objet actuel MarshalByRefObject .

(Hérité de MarshalByRefObject)
Parse(TextReader)

Compile le code lu à partir du flux de texte spécifié dans un CodeCompileUnit.

(Hérité de CodeDomProvider)
Supports(GeneratorSupport)

Retourne une valeur indiquant si la prise en charge de la génération de code spécifiée est fournie.

(Hérité de CodeDomProvider)
ToString()

Retourne un String nom contenant le nom du Component, le cas échéant. Cette méthode ne doit pas être remplacée.

(Hérité de Component)

Événements

Nom Description
Disposed

Se produit lorsque le composant est supprimé par un appel à la Dispose() méthode.

(Hérité de Component)

S’applique à

Voir aussi