CSharpCodeProvider Klasse

Definition

Stellt den Zugriff auf Instanzen des C#-Code-Generators und des C#-Codecompilers bereit.Provides access to instances of the C# code generator and code compiler.

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
Vererbung

Beispiele

Im folgenden Beispiel wird entweder der C# -oder Visual Basic-Code Anbieter verwendet, um eine Quelldatei zu kompilieren.The following example uses either the C# or Visual Basic code provider to compile a source file. Im Beispiel wird die Eingabedatei Erweiterung überprüft und die entsprechenden CSharpCodeProvider oder VBCodeProvider für die Kompilierung verwendet.The example checks the input file extension and uses the corresponding CSharpCodeProvider or VBCodeProvider for compilation. Die Eingabedatei wird in eine ausführbare Datei kompiliert, und alle Kompilierungsfehler werden in der Konsole angezeigt.The input file is compiled into an executable file, and any compilation errors are displayed to the console.

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

Hinweise

Diese Klasse stellt Methoden bereit, die zum Abrufen von Instanzen der C# ICodeGenerator und ICodeCompiler Implementierungen verwendet werden können.This class provides methods that can be used to retrieve instances of the C# ICodeGenerator and ICodeCompiler implementations.

Hinweis

Diese Klasse enthält einen Link Aufruf und eine Vererbungs Anforderung auf Klassenebene, die für alle Member gilt.This class contains a link demand and an inheritance demand at the class level that applies to all members. Eine SecurityException wird ausgelöst, wenn der unmittelbare Aufrufer oder die abgeleitete Klasse nicht über die Berechtigung für volle Vertrauenswürdigkeit verfügt.A SecurityException is thrown when either the immediate caller or the derived class does not have full-trust permission.

Konstruktoren

CSharpCodeProvider()

Initialisiert eine neue Instanz der Klasse CSharpCodeProvider.Initializes a new instance of the CSharpCodeProvider class.

CSharpCodeProvider(IDictionary<String,String>)

Initialisiert eine neue Instanz der CSharpCodeProvider-Klasse mit den angegebenen Anbieteroptionen.Initializes a new instance of the CSharpCodeProvider class by using the specified provider options.

Eigenschaften

CanRaiseEvents

Ruft einen Wert ab, der angibt, ob die Komponente ein Ereignis auslösen kann.Gets a value indicating whether the component can raise an event.

(Geerbt von Component)
Container

Ruft die IContainer ab, die in der Component enthalten ist.Gets the IContainer that contains the Component.

(Geerbt von Component)
DesignMode

Ruft einen Wert ab, der angibt, ob sich Component gegenwärtig im Entwurfsmodus befindet.Gets a value that indicates whether the Component is currently in design mode.

(Geerbt von Component)
Events

Ruft die Liste der Ereignishandler ab, die dieser Component angefügt sind.Gets the list of event handlers that are attached to this Component.

(Geerbt von Component)
FileExtension

Ruft die beim Erstellen von Quellcodedateien zu verwendende Dateinamenerweiterung ab.Gets the file name extension to use when creating source code files.

LanguageOptions

Ruft einen Bezeichner für Sprachfeatures ab.Gets a language features identifier.

(Geerbt von CodeDomProvider)
Site

Ruft den ISite von Component ab oder legt ihn fest.Gets or sets the ISite of the Component.

(Geerbt von Component)

Methoden

CompileAssemblyFromDom(CompilerParameters, CodeCompileUnit[])

Kompiliert eine Assembly auf Grundlage der System.CodeDom-Strukturen im angegebenen Array von CodeCompileUnit-Objekten mit den angegebenen Compilereinstellungen.Compiles an assembly based on the System.CodeDom trees contained in the specified array of CodeCompileUnit objects, using the specified compiler settings.

(Geerbt von CodeDomProvider)
CompileAssemblyFromFile(CompilerParameters, String[])

Kompiliert eine Assembly aus dem in den angegebenen Dateien enthaltenen Quellcode mit den angegebenen Compilereinstellungen.Compiles an assembly from the source code contained in the specified files, using the specified compiler settings.

(Geerbt von CodeDomProvider)
CompileAssemblyFromSource(CompilerParameters, String[])

Kompiliert eine Assembly aus dem angegebenen Array von Zeichenfolgen mit Quellcode und unter Verwendung der angegebenen Compilereinstellungen.Compiles an assembly from the specified array of strings containing source code, using the specified compiler settings.

(Geerbt von CodeDomProvider)
CreateCompiler()

Ruft eine Instanz des C#-Codecompilers ab.Gets an instance of the C# code compiler.

CreateEscapedIdentifier(String)

Erstellt einen mit einem Escapezeichen versehenen Bezeichner für den angegebenen Wert.Creates an escaped identifier for the specified value.

(Geerbt von CodeDomProvider)
CreateGenerator()

Ruft eine Instanz des C#-Code-Generators ab.Gets an instance of the C# code generator.

CreateGenerator(String)

Erstellt beim Überschreiben in einer abgeleiteten Klasse einen neuen Codegenerator unter Verwendung des angegebenen Dateinamens für die Ausgabe.When overridden in a derived class, creates a new code generator using the specified file name for output.

(Geerbt von CodeDomProvider)
CreateGenerator(TextWriter)

Erstellt beim Überschreiben in einer abgeleiteten Klasse einen neuen Codegenerator unter Verwendung des angegebenen TextWriter für die Ausgabe.When overridden in a derived class, creates a new code generator using the specified TextWriter for output.

(Geerbt von CodeDomProvider)
CreateObjRef(Type)

Erstellt ein Objekt mit allen relevanten Informationen, die zum Generieren eines Proxys für die Kommunikation mit einem Remoteobjekt erforderlich sind.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Geerbt von MarshalByRefObject)
CreateParser()

Erstellt beim Überschreiben in einer abgeleiteten Klasse einen neuen Codeparser.When overridden in a derived class, creates a new code parser.

(Geerbt von CodeDomProvider)
CreateValidIdentifier(String)

Erstellt einen gültigen Bezeichner für den angegebenen Wert.Creates a valid identifier for the specified value.

(Geerbt von CodeDomProvider)
Dispose()

Gibt alle von Component verwendeten Ressourcen frei.Releases all resources used by the Component.

(Geerbt von Component)
Dispose(Boolean)

Gibt die von Component verwendeten nicht verwalteten Ressourcen und optional die verwalteten Ressourcen frei.Releases the unmanaged resources used by the Component and optionally releases the managed resources.

(Geerbt von Component)
Equals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.Determines whether the specified object is equal to the current object.

(Geerbt von Object)
GenerateCodeFromCompileUnit(CodeCompileUnit, TextWriter, CodeGeneratorOptions)

Generiert Code für die angegebene CodeDOM-Kompilierungseinheit (Code Document Object Model) und sendet diesen mit den angegebenen Optionen an den angegebenen Textwriter.Generates code for the specified Code Document Object Model (CodeDOM) compilation unit and sends it to the specified text writer, using the specified options.

(Geerbt von CodeDomProvider)
GenerateCodeFromExpression(CodeExpression, TextWriter, CodeGeneratorOptions)

Generiert Code für den angegebenen CodeDOM-Ausdruck (Code Document Object Model) und sendet diesen mit den angegebenen Optionen an den angegebenen Textwriter.Generates code for the specified Code Document Object Model (CodeDOM) expression and sends it to the specified text writer, using the specified options.

(Geerbt von CodeDomProvider)
GenerateCodeFromMember(CodeTypeMember, TextWriter, CodeGeneratorOptions)

Generiert Code für den angegebenen Klassenmember unter Verwendung der angegebenen TextWriter- und Code-Generator-Optionen.Generates code for the specified class member using the specified text writer and code generator options.

GenerateCodeFromMember(CodeTypeMember, TextWriter, CodeGeneratorOptions)

Generiert Code für die angegebene CodeDOM-Memberdeklaration (Code Document Object Model) und sendet diesen mit den angegebenen Optionen an den angegebenen Textwriter.Generates code for the specified Code Document Object Model (CodeDOM) member declaration and sends it to the specified text writer, using the specified options.

(Geerbt von CodeDomProvider)
GenerateCodeFromNamespace(CodeNamespace, TextWriter, CodeGeneratorOptions)

Generiert Code für den angegebenen CodeDOM-Namespace (Code Document Object Model) und sendet diesen mit den angegebenen Optionen an den angegebenen Textwriter.Generates code for the specified Code Document Object Model (CodeDOM) namespace and sends it to the specified text writer, using the specified options.

(Geerbt von CodeDomProvider)
GenerateCodeFromStatement(CodeStatement, TextWriter, CodeGeneratorOptions)

Generiert Code für die angegebene CodeDOM-Anweisung (Code Document Object Model) und sendet diesen mit den angegebenen Optionen an den angegebenen Textwriter.Generates code for the specified Code Document Object Model (CodeDOM) statement and sends it to the specified text writer, using the specified options.

(Geerbt von CodeDomProvider)
GenerateCodeFromType(CodeTypeDeclaration, TextWriter, CodeGeneratorOptions)

Generiert Code für die angegebene CodeDOM-Typdeklaration (Code Document Object Model) und sendet diesen mit den angegebenen Optionen an den angegebenen Textwriter.Generates code for the specified Code Document Object Model (CodeDOM) type declaration and sends it to the specified text writer, using the specified options.

(Geerbt von CodeDomProvider)
GetConverter(Type)

Ruft einen TypeConverter für den angegebenen Objekttyp ab.Gets a TypeConverter for the specified type of object.

GetHashCode()

Fungiert als Standardhashfunktion.Serves as the default hash function.

(Geerbt von Object)
GetLifetimeService()

Ruft das aktuelle Lebensdauerdienstobjekt ab, das die Lebensdauerrichtlinien für diese Instanz steuert.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Geerbt von MarshalByRefObject)
GetService(Type)

Gibt ein Objekt zurück, das einen von der Component oder von deren Container bereitgestellten Dienst darstellt.Returns an object that represents a service provided by the Component or by its Container.

(Geerbt von Component)
GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Geerbt von Object)
GetTypeOutput(CodeTypeReference)

Ruft den durch die angegebene CodeTypeReference angegebenen Typ ab.Gets the type indicated by the specified CodeTypeReference.

(Geerbt von CodeDomProvider)
InitializeLifetimeService()

Ruft ein Lebensdauerdienstobjekt zur Steuerung der Lebensdauerrichtlinie für diese Instanz ab.Obtains a lifetime service object to control the lifetime policy for this instance.

(Geerbt von MarshalByRefObject)
IsValidIdentifier(String)

Gibt einen Wert zurück, der angibt, ob der angegebene Wert ein gültiger Bezeichner für die aktuelle Sprache ist.Returns a value that indicates whether the specified value is a valid identifier for the current language.

(Geerbt von CodeDomProvider)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Geerbt von Object)
MemberwiseClone(Boolean)

Erstellt eine flache Kopie des aktuellen MarshalByRefObject-Objekts.Creates a shallow copy of the current MarshalByRefObject object.

(Geerbt von MarshalByRefObject)
Parse(TextReader)

Kompiliert den aus dem angegebenen Textstream gelesenen Code in einer CodeCompileUnit.Compiles the code read from the specified text stream into a CodeCompileUnit.

(Geerbt von CodeDomProvider)
Supports(GeneratorSupport)

Gibt einen Wert zurück, der angibt, ob die angegebene Unterstützung für die Codegenerierung verfügbar ist.Returns a value indicating whether the specified code generation support is provided.

(Geerbt von CodeDomProvider)
ToString()

Gibt einen String zurück, der den Namen der Component enthält (sofern vorhanden).Returns a String containing the name of the Component, if any. Diese Methode darf nicht überschrieben werden.This method should not be overridden.

(Geerbt von Component)

Ereignisse

Disposed

Tritt auf, wenn die Komponente von einem Aufruf der Dispose()-Methode verworfen wird.Occurs when the component is disposed by a call to the Dispose() method.

(Geerbt von Component)

Gilt für:

Siehe auch