CSharpCodeProvider Klas

Definitie

Biedt toegang tot exemplaren van de C#-codegenerator en codecompilator.

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
Overname

Voorbeelden

In het volgende voorbeeld wordt de C# of Visual Basic codeprovider gebruikt om een bronbestand te compileren. In het voorbeeld wordt de bestandsextensie voor invoer gecontroleerd en wordt de bijbehorende CSharpCodeProvider of VBCodeProvider compilatie gebruikt. Het invoerbestand wordt gecompileerd in een uitvoerbaar bestand en eventuele compilatiefouten worden weergegeven in de console.

Important

De methoden CompileAssemblyFrom* worden niet ondersteund op .NET Core en .NET 5+. Dit voorbeeld wordt alleen uitgevoerd op .NET Framework.

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

Opmerkingen

Deze klasse biedt methoden die kunnen worden gebruikt om exemplaren van de C# ICodeGenerator en ICodeCompiler implementaties op te halen.

Note

Deze klasse bevat een koppelingsvraag en een overnamevraag op klasseniveau die van toepassing is op alle leden. Een SecurityException wordt geworpen wanneer de directe aanroeper of de afgeleide klasse geen volledig-vertrouwensmachtiging heeft.

Constructors

Name Description
CSharpCodeProvider()

Initialiseert een nieuw exemplaar van de CSharpCodeProvider klasse.

CSharpCodeProvider(IDictionary<String,String>)

Initialiseert een nieuw exemplaar van de CSharpCodeProvider klasse met behulp van de opgegeven provideropties.

Eigenschappen

Name Description
CanRaiseEvents

Hiermee wordt een waarde opgehaald die aangeeft of het onderdeel een gebeurtenis kan genereren.

(Overgenomen van Component)
Container

Hiermee haalt u het IContainer bestand op dat de Component.

(Overgenomen van Component)
DesignMode

Hiermee wordt een waarde opgehaald die aangeeft of de Component momenteel in de ontwerpmodus is.

(Overgenomen van Component)
Events

Hiermee haalt u de lijst met gebeurtenis-handlers op die aan dit Componentbestand zijn gekoppeld.

(Overgenomen van Component)
FileExtension

Hiermee haalt u de bestandsnaamextensie op die moet worden gebruikt bij het maken van broncodebestanden.

LanguageOptions

Hiermee haalt u een taalfuncties-id op.

(Overgenomen van CodeDomProvider)
Site

Haalt of stelt de ISite van de Component.

(Overgenomen van Component)

Methoden

Name Description
CompileAssemblyFromDom(CompilerParameters, CodeCompileUnit[])

Compileert een assembly op basis van de System.CodeDom bomen in de opgegeven matrix met objecten, met behulp van CodeCompileUnit de opgegeven compilerinstellingen.

(Overgenomen van CodeDomProvider)
CompileAssemblyFromFile(CompilerParameters, String[])

Compileert een assembly van de broncode in de opgegeven bestanden met behulp van de opgegeven compilerinstellingen.

(Overgenomen van CodeDomProvider)
CompileAssemblyFromSource(CompilerParameters, String[])

Compileert een assembly van de opgegeven matrix met tekenreeksen die broncode bevatten, met behulp van de opgegeven compilerinstellingen.

(Overgenomen van CodeDomProvider)
CreateCompiler()
Verouderd.

Hiermee haalt u een exemplaar van de C#-codecompilator op.

CreateEscapedIdentifier(String)

Hiermee maakt u een escape-id voor de opgegeven waarde.

(Overgenomen van CodeDomProvider)
CreateGenerator()
Verouderd.

Hiermee haalt u een exemplaar van de C#-codegenerator op.

CreateGenerator(String)

Wanneer deze wordt overschreven in een afgeleide klasse, maakt u een nieuwe codegenerator met behulp van de opgegeven bestandsnaam voor uitvoer.

(Overgenomen van CodeDomProvider)
CreateGenerator(TextWriter)

Wanneer deze wordt overschreven in een afgeleide klasse, maakt u een nieuwe codegenerator met behulp van de opgegeven TextWriter voor uitvoer.

(Overgenomen van CodeDomProvider)
CreateObjRef(Type)

Hiermee maakt u een object dat alle relevante informatie bevat die nodig is om een proxy te genereren die wordt gebruikt om te communiceren met een extern object.

(Overgenomen van MarshalByRefObject)
CreateParser()
Verouderd.

Wanneer deze wordt overschreven in een afgeleide klasse, maakt u een nieuwe codeparser.

(Overgenomen van CodeDomProvider)
CreateValidIdentifier(String)

Hiermee maakt u een geldige id voor de opgegeven waarde.

(Overgenomen van CodeDomProvider)
Dispose()

Alle resources die worden gebruikt door de Component.

(Overgenomen van Component)
Dispose(Boolean)

Publiceert de niet-beheerde resources die worden gebruikt door de Component beheerde resources en brengt eventueel de beheerde resources vrij.

(Overgenomen van Component)
Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GenerateCodeFromCompileUnit(CodeCompileUnit, TextWriter, CodeGeneratorOptions)

Genereert code voor de opgegeven Code Document Object Model -compilatie-eenheid (CodeDOM) en verzendt deze naar de opgegeven tekstschrijver met behulp van de opgegeven opties.

(Overgenomen van CodeDomProvider)
GenerateCodeFromExpression(CodeExpression, TextWriter, CodeGeneratorOptions)

Genereert code voor de opgegeven Code Document Object Model-expressie (CodeDOM) en verzendt deze naar de opgegeven tekstschrijver met behulp van de opgegeven opties.

(Overgenomen van CodeDomProvider)
GenerateCodeFromMember(CodeTypeMember, TextWriter, CodeGeneratorOptions)

Hiermee genereert u code voor het opgegeven klasselid met behulp van de opgegeven opties voor tekstschrijver en codegenerator.

GenerateCodeFromNamespace(CodeNamespace, TextWriter, CodeGeneratorOptions)

Hiermee genereert u code voor de opgegeven Code Document Object Model -naamruimte (CodeDOM) en verzendt u deze naar de opgegeven tekstschrijver met behulp van de opgegeven opties.

(Overgenomen van CodeDomProvider)
GenerateCodeFromStatement(CodeStatement, TextWriter, CodeGeneratorOptions)

Genereert code voor de opgegeven Code Document Object Model-instructie (CodeDOM) en verzendt deze naar de opgegeven tekstschrijver met behulp van de opgegeven opties.

(Overgenomen van CodeDomProvider)
GenerateCodeFromType(CodeTypeDeclaration, TextWriter, CodeGeneratorOptions)

Hiermee genereert u code voor de opgegeven codedocumentobjectmodeldeclaratie (CodeDOM) en verzendt u deze naar de opgegeven tekstschrijver met behulp van de opgegeven opties.

(Overgenomen van CodeDomProvider)
GetConverter(Type)

Hiermee haalt u een TypeConverter op voor het opgegeven type object.

GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetLifetimeService()

Hiermee haalt u het huidige levensduurserviceobject op waarmee het levensduurbeleid voor dit exemplaar wordt beheerd.

(Overgenomen van MarshalByRefObject)
GetService(Type)

Hiermee wordt een object geretourneerd dat een service vertegenwoordigt die wordt geleverd door of door de Component service Container.

(Overgenomen van Component)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
GetTypeOutput(CodeTypeReference)

Hiermee haalt u het type op dat wordt aangegeven door de opgegeven CodeTypeReference.

(Overgenomen van CodeDomProvider)
InitializeLifetimeService()

Hiermee haalt u een levensduurserviceobject op om het levensduurbeleid voor dit exemplaar te beheren.

(Overgenomen van MarshalByRefObject)
IsValidIdentifier(String)

Retourneert een waarde die aangeeft of de opgegeven waarde een geldige id is voor de huidige taal.

(Overgenomen van CodeDomProvider)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
MemberwiseClone(Boolean)

Hiermee maakt u een ondiepe kopie van het huidige MarshalByRefObject object.

(Overgenomen van MarshalByRefObject)
Parse(TextReader)

Compileert de code die wordt gelezen uit de opgegeven tekststroom naar een CodeCompileUnit.

(Overgenomen van CodeDomProvider)
Supports(GeneratorSupport)

Retourneert een waarde die aangeeft of de opgegeven ondersteuning voor het genereren van code wordt geboden.

(Overgenomen van CodeDomProvider)
ToString()

Retourneert een String met de naam van de Component, indien van toepassing. Deze methode mag niet worden overschreven.

(Overgenomen van Component)

gebeurtenis

Name Description
Disposed

Treedt op wanneer het onderdeel wordt verwijderd door een aanroep naar de Dispose() methode.

(Overgenomen van Component)

Van toepassing op

Zie ook