Export (0) Print
Expand All

CSharpCodeProvider Class

Provides access to instances of the C# code generator and code compiler.

Namespace:  Microsoft.CSharp
Assembly:  System (in System.dll)

'Declaration
<PermissionSetAttribute(SecurityAction.InheritanceDemand, Name := "FullTrust")> _
<PermissionSetAttribute(SecurityAction.LinkDemand, Name := "FullTrust")> _
Public Class CSharpCodeProvider _
	Inherits CodeDomProvider

The CSharpCodeProvider type exposes the following members.

  NameDescription
Public methodCSharpCodeProviderInitializes a new instance of the CSharpCodeProvider class.
Public methodCSharpCodeProvider(IDictionary(Of String, String))Initializes a new instance of the CSharpCodeProvider class by using the specified provider options.
Top

  NameDescription
Protected propertyCanRaiseEventsGets a value indicating whether the component can raise an event. (Inherited from Component.)
Public propertyContainerGets the IContainer that contains the Component. (Inherited from Component.)
Protected propertyDesignModeGets a value that indicates whether the Component is currently in design mode. (Inherited from Component.)
Protected propertyEventsGets the list of event handlers that are attached to this Component. (Inherited from Component.)
Public propertyFileExtensionGets the file name extension to use when creating source code files. (Overrides CodeDomProvider.FileExtension.)
Public propertyLanguageOptionsGets a language features identifier. (Inherited from CodeDomProvider.)
Public propertySiteGets or sets the ISite of the Component. (Inherited from Component.)
Top

  NameDescription
Public methodCompileAssemblyFromDomCompiles an assembly based on the System.CodeDom trees contained in the specified array of CodeCompileUnit objects, using the specified compiler settings. (Inherited from CodeDomProvider.)
Public methodCompileAssemblyFromFileCompiles an assembly from the source code contained in the specified files, using the specified compiler settings. (Inherited from CodeDomProvider.)
Public methodCompileAssemblyFromSourceCompiles an assembly from the specified array of strings containing source code, using the specified compiler settings. (Inherited from CodeDomProvider.)
Public methodCreateCompiler Obsolete. Gets an instance of the C# code compiler. (Overrides CodeDomProvider.CreateCompiler.)
Public methodCreateEscapedIdentifierCreates an escaped identifier for the specified value. (Inherited from CodeDomProvider.)
Public methodCreateGenerator Obsolete. Gets an instance of the C# code generator. (Overrides CodeDomProvider.CreateGenerator.)
Public methodCreateGenerator(String)When overridden in a derived class, creates a new code generator using the specified file name for output. (Inherited from CodeDomProvider.)
Public methodCreateGenerator(TextWriter)When overridden in a derived class, creates a new code generator using the specified TextWriter for output. (Inherited from CodeDomProvider.)
Public methodCreateObjRefCreates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object. (Inherited from MarshalByRefObject.)
Public methodCreateParser Obsolete. When overridden in a derived class, creates a new code parser. (Inherited from CodeDomProvider.)
Public methodCreateValidIdentifierCreates a valid identifier for the specified value. (Inherited from CodeDomProvider.)
Public methodDisposeReleases all resources used by the Component. (Inherited from Component.)
Protected methodDispose(Boolean)Releases the unmanaged resources used by the Component and optionally releases the managed resources. (Inherited from Component.)
Public methodEquals(Object)Determines whether the specified object is equal to the current object. (Inherited from Object.)
Protected methodFinalizeReleases unmanaged resources and performs other cleanup operations before the Component is reclaimed by garbage collection. (Inherited from Component.)
Public methodGenerateCodeFromCompileUnitGenerates code for the specified Code Document Object Model (CodeDOM) compilation unit and sends it to the specified text writer, using the specified options. (Inherited from CodeDomProvider.)
Public methodGenerateCodeFromExpressionGenerates code for the specified Code Document Object Model (CodeDOM) expression and sends it to the specified text writer, using the specified options. (Inherited from CodeDomProvider.)
Public methodGenerateCodeFromMemberGenerates code for the specified class member using the specified text writer and code generator options. (Overrides CodeDomProvider.GenerateCodeFromMember(CodeTypeMember, TextWriter, CodeGeneratorOptions).)
Public methodGenerateCodeFromNamespaceGenerates code for the specified Code Document Object Model (CodeDOM) namespace and sends it to the specified text writer, using the specified options. (Inherited from CodeDomProvider.)
Public methodGenerateCodeFromStatementGenerates code for the specified Code Document Object Model (CodeDOM) statement and sends it to the specified text writer, using the specified options. (Inherited from CodeDomProvider.)
Public methodGenerateCodeFromTypeGenerates code for the specified Code Document Object Model (CodeDOM) type declaration and sends it to the specified text writer, using the specified options. (Inherited from CodeDomProvider.)
Public methodGetConverterGets a TypeConverter for the specified type of object. (Overrides CodeDomProvider.GetConverter(Type).)
Public methodGetHashCodeServes as the default hash function. (Inherited from Object.)
Public methodGetLifetimeServiceRetrieves the current lifetime service object that controls the lifetime policy for this instance. (Inherited from MarshalByRefObject.)
Protected methodGetServiceReturns an object that represents a service provided by the Component or by its Container. (Inherited from Component.)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Public methodGetTypeOutputGets the type indicated by the specified CodeTypeReference. (Inherited from CodeDomProvider.)
Public methodInitializeLifetimeServiceObtains a lifetime service object to control the lifetime policy for this instance. (Inherited from MarshalByRefObject.)
Public methodIsValidIdentifierReturns a value that indicates whether the specified value is a valid identifier for the current language. (Inherited from CodeDomProvider.)
Protected methodMemberwiseCloneCreates a shallow copy of the current Object. (Inherited from Object.)
Protected methodMemberwiseClone(Boolean)Creates a shallow copy of the current MarshalByRefObject object. (Inherited from MarshalByRefObject.)
Public methodParseCompiles the code read from the specified text stream into a CodeCompileUnit. (Inherited from CodeDomProvider.)
Public methodSupportsReturns a value indicating whether the specified code generation support is provided. (Inherited from CodeDomProvider.)
Public methodToStringReturns a String containing the name of the Component, if any. This method should not be overridden. (Inherited from Component.)
Top

  NameDescription
Public eventDisposedOccurs when the component is disposed by a call to the Dispose method. (Inherited from Component.)
Top

This class provides methods that can be used to retrieve instances of the C# ICodeGenerator and ICodeCompiler implementations.

NoteNote

This class contains a link demand and an inheritance demand at the class level that applies to all members. A SecurityException is thrown when either the immediate caller or the derived class does not have full-trust permission. For details about security demands, see Link Demands and Inheritance Demands.

The following example uses either the C# or Visual Basic code provider to compile a source file. The example checks the input file extension and uses the corresponding CSharpCodeProvider or VBCodeProvider for compilation. The input file is compiled into an executable file, and any compilation errors are displayed to the console.

Imports System
Imports System.IO
Imports System.Globalization
Imports System.CodeDom.Compiler
Imports System.Text
Imports Microsoft.CSharp
Imports Microsoft.VisualBasic

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

.NET Framework

Supported in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Show:
© 2014 Microsoft