Udostępnij za pośrednictwem


CSharpCodeProvider Klasa

Definicja

Zapewnia dostęp do wystąpień generatora kodu języka C# i kompilatora kodu.

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
Dziedziczenie

Przykłady

W poniższym przykładzie użyto dostawcy kodu C# lub Visual Basic do skompilowania pliku źródłowego. Przykład sprawdza rozszerzenie pliku wejściowego i używa odpowiedniego polecenia CSharpCodeProvider lub VBCodeProvider do kompilacji. Plik wejściowy jest kompilowany w pliku wykonywalnym, a wszelkie błędy kompilacji są wyświetlane w konsoli programu .

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

Uwagi

Ta klasa udostępnia metody, których można użyć do pobierania wystąpień języka C# ICodeGenerator i ICodeCompiler implementacji.

Uwaga

Ta klasa zawiera żądanie łącza i dziedziczenia na poziomie klasy stosowane do wszystkich składowych. Element jest SecurityException zgłaszany, gdy bezpośredni obiekt wywołujący lub klasa pochodna nie ma uprawnień pełnego zaufania.

Konstruktory

CSharpCodeProvider()

Inicjuje nowe wystąpienie klasy CSharpCodeProvider.

CSharpCodeProvider(IDictionary<String,String>)

Inicjuje CSharpCodeProvider nowe wystąpienie klasy przy użyciu określonych opcji dostawcy.

Właściwości

CanRaiseEvents

Pobiera wartość wskazującą, czy składnik może zgłosić zdarzenie.

(Odziedziczone po Component)
Container

Pobiera element IContainer zawierający element Component.

(Odziedziczone po Component)
DesignMode

Pobiera wartość wskazującą, czy Component element jest obecnie w trybie projektowania.

(Odziedziczone po Component)
Events

Pobiera listę programów obsługi zdarzeń dołączonych do tego Componentelementu .

(Odziedziczone po Component)
FileExtension

Pobiera rozszerzenie nazwy pliku do użycia podczas tworzenia plików kodu źródłowego.

LanguageOptions

Pobiera identyfikator funkcji języka.

(Odziedziczone po CodeDomProvider)
Site

Pobiera lub ustawia ISite element .Component

(Odziedziczone po Component)

Metody

CompileAssemblyFromDom(CompilerParameters, CodeCompileUnit[])

Kompiluje zestaw na System.CodeDom podstawie drzew zawartych w określonej tablicy CodeCompileUnit obiektów przy użyciu określonych ustawień kompilatora.

(Odziedziczone po CodeDomProvider)
CompileAssemblyFromFile(CompilerParameters, String[])

Kompiluje zestaw z kodu źródłowego zawartego w określonych plikach przy użyciu określonych ustawień kompilatora.

(Odziedziczone po CodeDomProvider)
CompileAssemblyFromSource(CompilerParameters, String[])

Kompiluje zestaw z określonej tablicy ciągów zawierających kod źródłowy przy użyciu określonych ustawień kompilatora.

(Odziedziczone po CodeDomProvider)
CreateCompiler()
Przestarzałe.
Przestarzałe.

Pobiera wystąpienie kompilatora kodu języka C#.

CreateEscapedIdentifier(String)

Tworzy identyfikator ucieczki dla określonej wartości.

(Odziedziczone po CodeDomProvider)
CreateGenerator()
Przestarzałe.
Przestarzałe.

Pobiera wystąpienie generatora kodu języka C#.

CreateGenerator(String)

Po zastąpieniu w klasie pochodnej tworzy nowy generator kodu przy użyciu określonej nazwy pliku dla danych wyjściowych.

(Odziedziczone po CodeDomProvider)
CreateGenerator(TextWriter)

Po przesłonięciu w klasie pochodnej tworzy nowy generator kodu przy użyciu określonego TextWriter dla danych wyjściowych.

(Odziedziczone po CodeDomProvider)
CreateObjRef(Type)

Tworzy obiekt zawierający wszystkie istotne informacje wymagane do wygenerowania serwera proxy używanego do komunikowania się z obiektem zdalnym.

(Odziedziczone po MarshalByRefObject)
CreateParser()
Przestarzałe.
Przestarzałe.

Po przesłonięciu w klasie pochodnej tworzy nowy analizator kodu.

(Odziedziczone po CodeDomProvider)
CreateValidIdentifier(String)

Tworzy prawidłowy identyfikator dla określonej wartości.

(Odziedziczone po CodeDomProvider)
Dispose()

Zwalnia wszelkie zasoby używane przez element Component.

(Odziedziczone po Component)
Dispose(Boolean)

Zwalnia zasoby niezarządzane używane przez element Component i opcjonalnie zwalnia zasoby zarządzane.

(Odziedziczone po Component)
Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GenerateCodeFromCompileUnit(CodeCompileUnit, TextWriter, CodeGeneratorOptions)

Generuje kod dla określonej jednostki kompilacji Code Document Object Model (CodeDOM) i wysyła go do określonego modułu zapisywania tekstu przy użyciu określonych opcji.

(Odziedziczone po CodeDomProvider)
GenerateCodeFromExpression(CodeExpression, TextWriter, CodeGeneratorOptions)

Generuje kod dla określonego wyrażenia Code Document Object Model (CodeDOM) i wysyła go do określonego modułu zapisywania tekstu przy użyciu określonych opcji.

(Odziedziczone po CodeDomProvider)
GenerateCodeFromMember(CodeTypeMember, TextWriter, CodeGeneratorOptions)

Generuje kod dla określonego elementu członkowskiego klasy przy użyciu określonych opcji modułu zapisywania tekstu i generatora kodu.

GenerateCodeFromMember(CodeTypeMember, TextWriter, CodeGeneratorOptions)

Generuje kod dla określonej deklaracji składowej Code Document Object Model (CodeDOM) i wysyła go do określonego modułu zapisywania tekstu przy użyciu określonych opcji.

(Odziedziczone po CodeDomProvider)
GenerateCodeFromNamespace(CodeNamespace, TextWriter, CodeGeneratorOptions)

Generuje kod dla określonej przestrzeni nazw Code Document Object Model (CodeDOM) i wysyła go do określonego modułu zapisywania tekstu przy użyciu określonych opcji.

(Odziedziczone po CodeDomProvider)
GenerateCodeFromStatement(CodeStatement, TextWriter, CodeGeneratorOptions)

Generuje kod dla określonej instrukcji Code Document Object Model (CodeDOM) i wysyła go do określonego modułu zapisywania tekstu przy użyciu określonych opcji.

(Odziedziczone po CodeDomProvider)
GenerateCodeFromType(CodeTypeDeclaration, TextWriter, CodeGeneratorOptions)

Generuje kod dla określonej deklaracji typu Code Document Object Model (CodeDOM) i wysyła go do określonego modułu zapisywania tekstu przy użyciu określonych opcji.

(Odziedziczone po CodeDomProvider)
GetConverter(Type)

Pobiera element TypeConverter dla określonego typu obiektu.

GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetLifetimeService()
Przestarzałe.

Pobiera bieżący obiekt usługi okresu istnienia, który kontroluje zasady okresu istnienia dla tego wystąpienia.

(Odziedziczone po MarshalByRefObject)
GetService(Type)

Zwraca obiekt reprezentujący usługę dostarczaną przez Component obiekt lub przez obiekt Container.

(Odziedziczone po Component)
GetType()

Type Pobiera bieżące wystąpienie.

(Odziedziczone po Object)
GetTypeOutput(CodeTypeReference)

Pobiera typ wskazany przez określony CodeTypeReferenceelement .

(Odziedziczone po CodeDomProvider)
InitializeLifetimeService()
Przestarzałe.

Uzyskuje obiekt usługi okresu istnienia, aby kontrolować zasady okresu istnienia dla tego wystąpienia.

(Odziedziczone po MarshalByRefObject)
IsValidIdentifier(String)

Zwraca wartość wskazującą, czy określona wartość jest prawidłowym identyfikatorem bieżącego języka.

(Odziedziczone po CodeDomProvider)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
MemberwiseClone(Boolean)

Tworzy płytkią kopię bieżącego MarshalByRefObject obiektu.

(Odziedziczone po MarshalByRefObject)
Parse(TextReader)

Kompiluje kod odczytywany ze strumienia określonego tekstu do elementu CodeCompileUnit.

(Odziedziczone po CodeDomProvider)
Supports(GeneratorSupport)

Zwraca wartość wskazującą, czy podana jest obsługa generowania kodu.

(Odziedziczone po CodeDomProvider)
ToString()

Zwraca wartość String zawierającą nazwę Componentobiektu , jeśli istnieje. Ta metoda nie powinna być zastępowana.

(Odziedziczone po Component)

Zdarzenia

Disposed

Występuje, gdy składnik jest usuwany przez wywołanie Dispose() metody .

(Odziedziczone po Component)

Dotyczy

Zobacz też