CSharpCodeProvider Třída

Definice

Poskytuje přístup k instancím generátoru kódu jazyka C# a kompilátoru kódu.

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
Dědičnost

Příklady

Následující příklad používá ke kompilaci zdrojového souboru zprostředkovatele kódu jazyka C# nebo Visual Basic. Příklad zkontroluje příponu vstupního souboru a použije odpovídající CSharpCodeProvider nebo VBCodeProvider pro kompilaci. Vstupní soubor je zkompilován do spustitelného souboru a všechny chyby kompilace se zobrazí v konzole.

Important

Metody CompileAssemblyFrom* se nepodporují v .NET Core a .NET 5 nebo novější. Tento příklad se spouští pouze v .NET Frameworku.

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

Poznámky

Tato třída poskytuje metody, které lze použít k načtení instancí jazyka C# ICodeGenerator a ICodeCompiler implementací.

Note

Tato třída obsahuje požadavek na propojení a poptávku dědičnosti na úrovni třídy, která se vztahuje na všechny členy. Vyvolá se SecurityException, pokud buď bezprostřední volající, nebo odvozená třída nemá oprávnění plné důvěryhodnosti.

Konstruktory

Name Description
CSharpCodeProvider()

Inicializuje novou instanci CSharpCodeProvider třídy.

CSharpCodeProvider(IDictionary<String,String>)

Inicializuje novou instanci CSharpCodeProvider třídy pomocí zadaných možností zprostředkovatele.

Vlastnosti

Name Description
CanRaiseEvents

Získá hodnotu určující, zda komponenta může vyvolat událost.

(Zděděno od Component)
Container

Získá ten IContainer , který obsahuje Component.

(Zděděno od Component)
DesignMode

Získá hodnotu, která označuje, zda Component je aktuálně v režimu návrhu.

(Zděděno od Component)
Events

Získá seznam obslužných rutin událostí, které jsou připojeny k tomuto Component.

(Zděděno od Component)
FileExtension

Získá příponu názvu souboru, která se má použít při vytváření souborů zdrojového kódu.

LanguageOptions

Získá identifikátor funkcí jazyka.

(Zděděno od CodeDomProvider)
Site

Získá nebo nastaví ISite objektu Component.

(Zděděno od Component)

Metody

Name Description
CompileAssemblyFromDom(CompilerParameters, CodeCompileUnit[])

Zkompiluje sestavení založené na System.CodeDom stromech obsažených CodeCompileUnit v zadaném poli objektů pomocí zadaného nastavení kompilátoru.

(Zděděno od CodeDomProvider)
CompileAssemblyFromFile(CompilerParameters, String[])

Zkompiluje sestavení ze zdrojového kódu obsaženého v zadaných souborech pomocí zadaného nastavení kompilátoru.

(Zděděno od CodeDomProvider)
CompileAssemblyFromSource(CompilerParameters, String[])

Zkompiluje sestavení ze zadaného pole řetězců obsahujících zdrojový kód pomocí zadaného nastavení kompilátoru.

(Zděděno od CodeDomProvider)
CreateCompiler()
Zastaralé.
Zastaralé.

Získá instanci kompilátoru kódu jazyka C#.

CreateEscapedIdentifier(String)

Vytvoří řídicí identifikátor pro zadanou hodnotu.

(Zděděno od CodeDomProvider)
CreateGenerator()
Zastaralé.
Zastaralé.

Získá instanci generátoru kódu jazyka C#.

CreateGenerator(String)

Při přepsání v odvozené třídě vytvoří nový generátor kódu pomocí zadaného názvu souboru pro výstup.

(Zděděno od CodeDomProvider)
CreateGenerator(TextWriter)

Při přepsání v odvozené třídě vytvoří nový generátor kódu pomocí zadaného TextWriter výstupu.

(Zděděno od CodeDomProvider)
CreateObjRef(Type)

Vytvoří objekt, který obsahuje všechny relevantní informace potřebné k vygenerování proxy serveru sloužícího ke komunikaci se vzdáleným objektem.

(Zděděno od MarshalByRefObject)
CreateParser()
Zastaralé.
Zastaralé.

Při přepsání v odvozené třídě vytvoří nový analyzátor kódu.

(Zděděno od CodeDomProvider)
CreateValidIdentifier(String)

Vytvoří platný identifikátor pro zadanou hodnotu.

(Zděděno od CodeDomProvider)
Dispose()

Uvolní všechny prostředky používané nástrojem Component.

(Zděděno od Component)
Dispose(Boolean)

Uvolní nespravované prostředky používané Component a volitelně uvolní spravované prostředky.

(Zděděno od Component)
Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
GenerateCodeFromCompileUnit(CodeCompileUnit, TextWriter, CodeGeneratorOptions)

Vygeneruje kód pro zadanou kompilační jednotku codeDOM (CodeDOM) a odešle ho zadanému textovému zapisovači pomocí zadaných možností.

(Zděděno od CodeDomProvider)
GenerateCodeFromExpression(CodeExpression, TextWriter, CodeGeneratorOptions)

Vygeneruje kód pro zadaný výraz Code DOCUMENT Object Model (CodeDOM) a odešle ho zadanému textovému zapisovači pomocí zadaných možností.

(Zděděno od CodeDomProvider)
GenerateCodeFromMember(CodeTypeMember, TextWriter, CodeGeneratorOptions)

Vygeneruje kód pro zadaný člen třídy pomocí zadaného textového zapisovače a možností generátoru kódu.

GenerateCodeFromNamespace(CodeNamespace, TextWriter, CodeGeneratorOptions)

Generuje kód pro zadaný obor názvů Code DOCUMENT Object Model (CodeDOM) a odešle ho zadanému textovému zapisovači pomocí zadaných možností.

(Zděděno od CodeDomProvider)
GenerateCodeFromStatement(CodeStatement, TextWriter, CodeGeneratorOptions)

Vygeneruje kód pro zadaný příkaz Code Document Object Model (CodeDOM) a odešle ho zadanému textovému zapisovači pomocí zadaných možností.

(Zděděno od CodeDomProvider)
GenerateCodeFromType(CodeTypeDeclaration, TextWriter, CodeGeneratorOptions)

Vygeneruje kód pro zadanou deklaraci typu CodeDOM (CodeDOM) a odešle ho zadanému textovému zapisovači pomocí zadaných možností.

(Zděděno od CodeDomProvider)
GetConverter(Type)

TypeConverter Získá pro zadaný typ objektu.

GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetLifetimeService()
Zastaralé.

Načte objekt služby aktuální životnosti, který řídí zásady životnosti pro tuto instanci.

(Zděděno od MarshalByRefObject)
GetService(Type)

Vrátí objekt, který představuje službu poskytovanou objektem Component nebo jeho Container.

(Zděděno od Component)
GetType()

Získá Type aktuální instance.

(Zděděno od Object)
GetTypeOutput(CodeTypeReference)

Získá typ označený zadaným CodeTypeReference.

(Zděděno od CodeDomProvider)
InitializeLifetimeService()
Zastaralé.

Získá objekt služby životnosti pro řízení zásad životnosti pro tuto instanci.

(Zděděno od MarshalByRefObject)
IsValidIdentifier(String)

Vrátí hodnotu, která určuje, zda je zadaná hodnota platným identifikátorem pro aktuální jazyk.

(Zděděno od CodeDomProvider)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
MemberwiseClone(Boolean)

Vytvoří mělkou kopii aktuálního MarshalByRefObject objektu.

(Zděděno od MarshalByRefObject)
Parse(TextReader)

Zkompiluje kód přečtený ze zadaného textového streamu do objektu CodeCompileUnit.

(Zděděno od CodeDomProvider)
Supports(GeneratorSupport)

Vrátí hodnotu určující, zda je zadána podpora generování zadaného kódu.

(Zděděno od CodeDomProvider)
ToString()

String Vrátí hodnotu obsahující název Component, pokud existuje. Tato metoda by neměla být přepsána.

(Zděděno od Component)

Událost

Name Description
Disposed

Nastane, když komponenta je uvolněna voláním Dispose() metody.

(Zděděno od Component)

Platí pro

Viz také