CSharpCodeProvider Osztály

Definíció

Hozzáférést biztosít a C#-kódgenerátor és a kódfordító példányaihoz.

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
Öröklődés

Példák

Az alábbi példa a C# vagy Visual Basic kódszolgáltatót használja egy forrásfájl fordításához. A példa ellenőrzi a bemeneti fájlbővítményt, és a megfelelőt CSharpCodeProvider vagy VBCodeProvider fordítást használja. A bemeneti fájl végrehajtható fájlba van lefordítva, és minden fordítási hiba megjelenik a konzolon.

Important

A CompileAssemblyFrom* metódusok nem támogatottak .NET Core és .NET 5+ rendszeren. Ez a példa csak .NET-keretrendszeren fut.

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

Megjegyzések

Ez az osztály olyan metódusokat biztosít, amelyekkel lekérhetők a C# ICodeGenerator példányai és ICodeCompiler az implementációk.

Note

Ez az osztály az összes tagra vonatkozó hivatkozási és öröklési igényt tartalmaz az osztály szintjén. A SecurityException akkor dobódik, ha az azonnali hívó vagy a származtatott osztály nem rendelkezik teljes megbízhatósági engedéllyel.

Konstruktorok

Name Description
CSharpCodeProvider()

Inicializálja a CSharpCodeProvider osztály új példányát.

CSharpCodeProvider(IDictionary<String,String>)

Inicializálja az CSharpCodeProvider osztály új példányát a megadott szolgáltatói beállítások használatával.

Tulajdonságok

Name Description
CanRaiseEvents

Beolvas egy értéket, amely jelzi, hogy az összetevő képes-e eseményt létrehozni.

(Öröklődés forrása Component)
Container

Lekéri a IContainer .Component

(Öröklődés forrása Component)
DesignMode

Olyan értéket kap, amely jelzi, hogy az Component aktuálisan tervezési módban van-e.

(Öröklődés forrása Component)
Events

Lekéri az ehhez Componentcsatolt eseménykezelők listáját.

(Öröklődés forrása Component)
FileExtension

Lekéri a forráskódfájlok létrehozásakor használni kívánt fájlnévkiterjesztést.

LanguageOptions

Lekéri a nyelvi funkciók azonosítóját.

(Öröklődés forrása CodeDomProvider)
Site

Lekéri vagy megadja a ISite értékét a Component-hez.

(Öröklődés forrása Component)

Metódusok

Name Description
CompileAssemblyFromDom(CompilerParameters, CodeCompileUnit[])

A megadott objektumtömbben CodeCompileUnit található fák alapján System.CodeDom állít össze egy szerelvényt a megadott fordítóbeállítások használatával.

(Öröklődés forrása CodeDomProvider)
CompileAssemblyFromFile(CompilerParameters, String[])

Összeállít egy szerelvényt a megadott fájlokban található forráskódból a megadott fordítóbeállítások használatával.

(Öröklődés forrása CodeDomProvider)
CompileAssemblyFromSource(CompilerParameters, String[])

Szerelvény fordítása a forráskódot tartalmazó sztringek megadott tömbéből a megadott fordítóbeállítások használatával.

(Öröklődés forrása CodeDomProvider)
CreateCompiler()
Elavult.

Lekéri a C#-kódfordító egy példányát.

CreateEscapedIdentifier(String)

Létrehoz egy szöktetésazonosítót a megadott értékhez.

(Öröklődés forrása CodeDomProvider)
CreateGenerator()
Elavult.

Lekéri a C#-kódgenerátor egy példányát.

CreateGenerator(String)

Ha egy származtatott osztályban felül van bírálva, egy új kódgenerátort hoz létre a kimenethez megadott fájlnév használatával.

(Öröklődés forrása CodeDomProvider)
CreateGenerator(TextWriter)

Ha egy származtatott osztályban felül van bírálva, egy új kódgenerátort hoz létre a megadott TextWriter kimenettel.

(Öröklődés forrása CodeDomProvider)
CreateObjRef(Type)

Létrehoz egy objektumot, amely tartalmazza a távoli objektumokkal való kommunikációhoz használt proxy létrehozásához szükséges összes releváns információt.

(Öröklődés forrása MarshalByRefObject)
CreateParser()
Elavult.

Ha felül van bírálva egy származtatott osztályban, létrehoz egy új kódelemzőt.

(Öröklődés forrása CodeDomProvider)
CreateValidIdentifier(String)

Létrehoz egy érvényes azonosítót a megadott értékhez.

(Öröklődés forrása CodeDomProvider)
Dispose()

Felszabadítja a .-hez használt összes erőforrást Component.

(Öröklődés forrása Component)
Dispose(Boolean)

Felszabadítja a felügyelt erőforrások által Component használt nem felügyelt erőforrásokat, és opcionálisan felszabadítja a felügyelt erőforrásokat.

(Öröklődés forrása Component)
Equals(Object)

Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal.

(Öröklődés forrása Object)
GenerateCodeFromCompileUnit(CodeCompileUnit, TextWriter, CodeGeneratorOptions)

Létrehoz egy kódot a megadott Code Document Object Model (CodeDOM) fordítási egységhez, és elküldi a megadott szövegírónak a megadott beállításokkal.

(Öröklődés forrása CodeDomProvider)
GenerateCodeFromExpression(CodeExpression, TextWriter, CodeGeneratorOptions)

Létrehoz egy kódot a megadott Code Document Object Model (CodeDOM) kifejezéshez, és elküldi a megadott szövegírónak a megadott beállításokkal.

(Öröklődés forrása CodeDomProvider)
GenerateCodeFromMember(CodeTypeMember, TextWriter, CodeGeneratorOptions)

A megadott osztálytag kódját a megadott szövegíró és kódgenerátor beállításaival hozza létre.

GenerateCodeFromNamespace(CodeNamespace, TextWriter, CodeGeneratorOptions)

Létrehoz egy kódot a megadott Code Document Object Model (CodeDOM) névtérhez, és elküldi a megadott szövegírónak a megadott beállításokkal.

(Öröklődés forrása CodeDomProvider)
GenerateCodeFromStatement(CodeStatement, TextWriter, CodeGeneratorOptions)

Létrehoz egy kódot a megadott Code Document Object Model (CodeDOM) utasításhoz, és elküldi a megadott szövegírónak a megadott beállításokkal.

(Öröklődés forrása CodeDomProvider)
GenerateCodeFromType(CodeTypeDeclaration, TextWriter, CodeGeneratorOptions)

Létrehoz egy kódot a megadott Code Document Object Model (CodeDOM) típusdeklarációhoz, és elküldi a megadott szövegírónak a megadott beállításokkal.

(Öröklődés forrása CodeDomProvider)
GetConverter(Type)

TypeConverter Lekéri a megadott típusú objektumot.

GetHashCode()

Ez az alapértelmezett kivonatoló függvény.

(Öröklődés forrása Object)
GetLifetimeService()

Lekéri a példány élettartamszabályzatát vezérlő aktuális élettartam-szolgáltatásobjektumot.

(Öröklődés forrása MarshalByRefObject)
GetService(Type)

Olyan objektumot ad vissza, amely az általa vagy annak által ComponentContainernyújtott szolgáltatást jelöli.

(Öröklődés forrása Component)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
GetTypeOutput(CodeTypeReference)

Lekéri a megadott CodeTypeReferencetípust.

(Öröklődés forrása CodeDomProvider)
InitializeLifetimeService()

Beolvas egy élettartam-szolgáltatásobjektumot a példány élettartam-szabályzatának szabályozásához.

(Öröklődés forrása MarshalByRefObject)
IsValidIdentifier(String)

Olyan értéket ad vissza, amely jelzi, hogy a megadott érték érvényes azonosító-e az aktuális nyelvhez.

(Öröklődés forrása CodeDomProvider)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
MemberwiseClone(Boolean)

Az aktuális MarshalByRefObject objektum sekély másolatát hozza létre.

(Öröklődés forrása MarshalByRefObject)
Parse(TextReader)

A megadott szövegstreamből beolvasott kódot lefordítja egy CodeCompileUnit.

(Öröklődés forrása CodeDomProvider)
Supports(GeneratorSupport)

Egy értéket ad vissza, amely jelzi, hogy a megadott kódgenerálási támogatás biztosított-e.

(Öröklődés forrása CodeDomProvider)
ToString()

String A ( ha van) nevet tartalmazó értéket Componentad vissza. Ezt a módszert nem szabad felülírni.

(Öröklődés forrása Component)

esemény

Name Description
Disposed

Akkor fordul elő, ha az összetevőt a metódus hívása megsemmisíti Dispose() .

(Öröklődés forrása Component)

A következőre érvényes:

Lásd még