Export (0) Print
Expand All

CodeDomProvider.CreateProvider Method (String)

Gets a CodeDomProvider instance for the specified language.

Namespace:  System.CodeDom.Compiler
Assembly:  System (in System.dll)

[ComVisibleAttribute(false)]
public static CodeDomProvider CreateProvider(
	string language
)

Parameters

language
Type: System.String

The language name.

Return Value

Type: System.CodeDom.Compiler.CodeDomProvider
A CodeDOM provider that is implemented for the specified language name.

ExceptionCondition
ConfigurationErrorsException

The language does not have a configured provider on this computer.

ArgumentNullException

The language is null.

SecurityException

The caller does not have the required permission.

NoteNote

This method is most commonly used to create an instance of a code provider in an application that may optionally use one of several providers. CreateProvider allows you to specify at run time the code provider you wish to instantiate. If you know at design time which code provider is to be used, you should create an instance of that code provider rather than use the CreateProvider method.

The CreateProvider method returns a CodeDomProvider instance for a specific language name; it is similar to calling the Activator.CreateInstance method with the language provider type. Use CreateProvider when you want to dynamically find a configured provider implementation for a language name.

If more than one provider implementation is configured for the language name, CreateProvider returns a provider instance for the last matching configuration element.

Use the Activator.CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo) method overload when you want a specific language provider implementation. For example, use the CreateProvider method to get a provider instance that supports the language name "CSharp"; use the Activator.CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo) method overload to get a provider instance specifically for the Microsoft.CSharp.CSharpCodeProvider implementation. You should use the Activator.CreateInstance(Type, BindingFlags, Binder, Object[], CultureInfo, Object[]) method if you have multiple code providers for a language and you desire to instantiate a specific code provider.

The IsDefinedLanguage method checks whether at least one provider implementation supports a specific language. You can validate a language name using IsDefinedLanguage before passing it to CreateProvider. If you pass an unsupported language name to CreateProvider a System.Configuration.ConfigurationException is thrown.

The GetAllCompilerInfo method can be used to determine all CodeDomProvider implementations on a computer, including additional implementations provided by developers and compiler vendors that are identified in the <system.codedom> Element in the machine configuration file (Machine.config).

The CreateProvider method returns an instance of a CodeDomProvider implementation for a specific language.

Language names are case-insensitive.

The following code example determines the CodeDomProvider implementation for an input language and displays the configured settings for the language provider. This code example is part of a larger example provided for the CompilerInfo class.

CodeDomProvider provider;

// Check for a provider corresponding to the input language.   
if (CodeDomProvider.IsDefinedLanguage(language))
{
    provider = CodeDomProvider.CreateProvider(language);

    // Display information about this language provider.

    Console.WriteLine("Language provider:  {0}", 
        provider.ToString());
    Console.WriteLine();
    Console.WriteLine("  Default file extension:  {0}", 
        provider.FileExtension);
    Console.WriteLine();

    // Get the compiler settings for this language.

    CompilerInfo langCompilerInfo = CodeDomProvider.GetCompilerInfo(language);
    CompilerParameters langCompilerConfig = langCompilerInfo.CreateDefaultCompilerParameters();

    Console.WriteLine("  Compiler options:        {0}", 
        langCompilerConfig.CompilerOptions);
    Console.WriteLine("  Compiler warning level:  {0}", 
        langCompilerConfig.WarningLevel);
}
else
{
    // Tell the user that the language provider was not found.
    Console.WriteLine("There is no provider configured for input language \"{0}\".", 
        language);
}

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.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.

Show:
© 2014 Microsoft