Sdílet prostřednictvím


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á zprostředkovatele kódu jazyka C# nebo Visual Basic ke kompilaci zdrojového souboru. Příklad zkontroluje příponu vstupního souboru a použije odpovídající CSharpCodeProvider nebo VBCodeProvider ke kompilaci. Vstupní soubor se zkompiluje do spustitelného souboru a všechny chyby kompilace se zobrazí v konzole nástroje .

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í.

Poznámka

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

Konstruktory

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

CanRaiseEvents

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

(Zděděno od Component)
Container

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

(Zděděno od Component)
DesignMode

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

(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 z Component.

(Zděděno od Component)

Metody

CompileAssemblyFromDom(CompilerParameters, CodeCompileUnit[])

Zkompiluje sestavení na System.CodeDom základě stromů obsažených v zadaném CodeCompileUnit 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ří identifikátor s řídicím znakem 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 s použitím 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 pro výstup.

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

Vytvoří objekt, který obsahuje všechny relevantní informace potřebné k vygenerování proxy sloužící 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é nástrojem Component a volitelně uvolní spravované prostředky.

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

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

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

Vygeneruje kód pro zadanou jednotku kompilace CodeDOM (CodeDOM) a odešle jej zadanému zapisovači textu 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 zapisovači textu pomocí zadaných možností.

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

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

GenerateCodeFromMember(CodeTypeMember, TextWriter, CodeGeneratorOptions)

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

(Zděděno od CodeDomProvider)
GenerateCodeFromNamespace(CodeNamespace, TextWriter, CodeGeneratorOptions)

Vygeneruje kód pro zadaný obor názvů CodeDOM (Code DOCUMENT Object Model) a odešle ho zadanému zapisovači textu 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 zapisovači textu 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 jej zadanému zapisovači textu pomocí zadaných možností.

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

TypeConverter Získá pro zadaný typ objektu.

GetHashCode()

Slouží jako výchozí hashovací funkce.

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

Načte aktuální životnost objektu služby, 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 .Container

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

Type Získá z aktuální instance.

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

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

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

Získá životnost objektu služby, který řídí zásady životnosti pro tuto instanci.

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

Vrátí hodnotu, která označ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 Objectsouboru .

(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 .CodeCompileUnit

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

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

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

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

(Zděděno od Component)

Událost

Disposed

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

(Zděděno od Component)

Platí pro

Viz také