CompilerInfo (Clase)
Ensamblado: System (en system.dll)
Utilice la clase CompilerInfo para determinar si se ha configurado una implementación de CodeDomProvider en el equipo, o para examinar los valores de configuración y del compilador de un proveedor de lenguaje concreto.
El <system.codedom> (Elemento) del archivo de configuración del equipo contiene los valores de configuración del compilador y del proveedor de lenguaje. Cada proveedor de lenguaje configurado tiene un elemento de configuración de compilador correspondiente. Cada elemento define el tipo de implementación, los nombres de lenguajes compatibles, las extensiones de nombre de archivo compatibles y los parámetros de compilador de CodeDomProvider.
.NET Framework define la configuración inicial del compilador en el archivo de configuración del equipo. Los desarrolladores y los proveedores de compiladores pueden agregar valores de configuración para una nueva implementación de CodeDomProvider.
La clase CompilerInfo proporciona acceso de sólo lectura a estos valores de configuración del archivo de configuración del equipo. Utilice los miembros GetLanguages, GetExtensions y CodeDomProviderType para examinar los atributos de configuración correspondientes a un proveedor de lenguaje. Utilice el método CreateDefaultCompilerParameters para obtener las opciones del compilador y los valores de los atributos de nivel de advertencia para un proveedor de lenguaje.
Para obtener información más detallada acerca de los valores de configuración del proveedor de lenguaje del archivo de configuración, vea Esquema de configuración de compilador y proveedor de lenguaje.
Nota |
|---|
| Esta clase contiene una petición de vínculo en el nivel de clase que se aplica a todos los miembros. Si el llamador inmediato no dispone de permisos de plena confianza, se produce una excepción SecurityException. Para obtener información detallada sobre las peticiones de vínculo, vea Peticiones de vínculos. |
En el ejemplo de código siguiente se muestran los valores de configuración del proveedor de lenguaje. Se utilizan argumentos de línea de comandos para especificar el lenguaje, la extensión de nombre de archivo o el tipo de proveedor. En el ejemplo se determina, para la entrada dada, el proveedor de lenguaje correspondiente, mostrando los valores del compilador de lenguaje configurado.
// Command-line argument examples: // <exe_name> // - Displays Visual Basic, C#, and JScript compiler settings. // <exe_name> Language CSharp // - Displays the compiler settings for C#. // <exe_name> All // - Displays settings for all configured compilers. // <exe_name> Config Pascal // - Displays settings for configured Pascal language provider, // if one exists. // <exe_name> Extension .vb // - Displays settings for the compiler associated with the .vb // file extension. using System; using System.Globalization; using System.CodeDom; using System.CodeDom.Compiler; using Microsoft.CSharp; using Microsoft.VisualBasic; namespace CodeDomCompilerInfoSample { class CompilerInfoSample { [STAThread] static void Main(string[] args) { String queryCommand = ""; String queryArg = ""; int iNumArguments = args.Length; // Get input command-line arguments. if (iNumArguments > 0) { queryCommand = args[0].ToUpper(CultureInfo.InvariantCulture); if (iNumArguments > 1) { queryArg = args[1]; } } // Determine which method to call. Console.WriteLine(); switch(queryCommand) { case ("LANGUAGE"): // Display compiler information for input language. DisplayCompilerInfoForLanguage(queryArg); break; case ("EXTENSION"): // Display compiler information for input file extension. DisplayCompilerInfoUsingExtension(queryArg); break; case ("CONFIG"): // Display settings for the configured language provider. DisplayCompilerInfoForConfigLanguage(queryArg); break; case ("ALL"): // Display compiler information for all configured // language providers. DisplayAllCompilerInfo(); break; default: // There was no command-line argument, or the // command-line argument was not recognized. // Display the C#, Visual Basic and JScript // compiler information. DisplayCSharpCompilerInfo(); DisplayVBCompilerInfo(); DisplayJScriptCompilerInfo(); break; } } static void DisplayCSharpCompilerInfo() { // Get the provider for Microsoft.CSharp CodeDomProvider provider = new CSharpCodeProvider(); // Display the C# language provider information. Console.WriteLine("CSharp provider is {0}", provider.ToString()); Console.WriteLine(" Provider hash code: {0}", provider.GetHashCode().ToString()); Console.WriteLine(" Default file extension: {0}", provider.FileExtension); Console.WriteLine(); } static void DisplayVBCompilerInfo() { // Get the provider for Microsoft.VisualBasic CodeDomProvider provider = new VBCodeProvider(); // Display the Visual Basic language provider information. Console.WriteLine("Visual Basic provider is {0}", provider.ToString()); Console.WriteLine(" Provider hash code: {0}", provider.GetHashCode().ToString()); Console.WriteLine(" Default file extension: {0}", provider.FileExtension); Console.WriteLine(); } static void DisplayJScriptCompilerInfo() { // Get the provider for JScript. CodeDomProvider provider; try { provider = CodeDomProvider.CreateProvider("js"); // Display the JScript language provider information. Console.WriteLine("JScript language provider is {0}", provider.ToString()); Console.WriteLine(" Provider hash code: {0}", provider.GetHashCode().ToString()); Console.WriteLine(" Default file extension: {0}", provider.FileExtension); Console.WriteLine(); } catch (System.Configuration.ConfigurationException) { // The JScript language provider was not found. Console.WriteLine("There is no configured JScript language provider."); } } static void DisplayCompilerInfoUsingExtension(string fileExtension) { if (fileExtension[0] != '.') { fileExtension = "." + fileExtension; } // Get the language associated with the file extension. if (CodeDomProvider.IsDefinedExtension(fileExtension)) { CodeDomProvider provider; String language = CodeDomProvider.GetLanguageFromExtension(fileExtension); Console.WriteLine("The language \"{0}\" is associated with file extension \"{1}\"", language, fileExtension); Console.WriteLine(); // Next, check for a corresponding language provider. if (CodeDomProvider.IsDefinedLanguage(language)) { provider = CodeDomProvider.CreateProvider(language); // Display information about this language provider. Console.WriteLine("Language provider: {0}", provider.ToString()); 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 language provider associated with input file extension \"{0}\".", fileExtension); } } static void DisplayCompilerInfoForLanguage(string language) { 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); } } static void DisplayCompilerInfoForConfigLanguage(string configLanguage) { CompilerInfo info = CodeDomProvider.GetCompilerInfo(configLanguage); // Check whether there is a provider configured for this language. if (info.IsCodeDomProviderTypeValid) { // Get a provider instance using the configured type information. CodeDomProvider provider; provider = (CodeDomProvider)Activator.CreateInstance(info.CodeDomProviderType); // 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. CompilerParameters langCompilerConfig = info.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}\".", configLanguage); } } static void DisplayAllCompilerInfo() { CompilerInfo [] allCompilerInfo = CodeDomProvider.GetAllCompilerInfo(); foreach (CompilerInfo info in allCompilerInfo) { String defaultLanguage; String defaultExtension; CodeDomProvider provider = info.CreateProvider(); // Display information about this configured provider. Console.WriteLine("Language provider: {0}", provider.ToString()); Console.WriteLine(); Console.WriteLine(" Supported file extension(s):"); foreach(String extension in info.GetExtensions()) { Console.WriteLine(" {0}", extension); } defaultExtension = provider.FileExtension; if (defaultExtension[0] != '.') { defaultExtension = "." + defaultExtension; } Console.WriteLine(" Default file extension: {0}", defaultExtension); Console.WriteLine(); Console.WriteLine(" Supported language(s):"); foreach(String language in info.GetLanguages()) { Console.WriteLine(" {0}", language); } defaultLanguage = CodeDomProvider.GetLanguageFromExtension(defaultExtension); Console.WriteLine(" Default language: {0}", defaultLanguage); Console.WriteLine(); // Get the compiler settings for this provider. CompilerParameters langCompilerConfig = info.CreateDefaultCompilerParameters(); Console.WriteLine(" Compiler options: {0}", langCompilerConfig.CompilerOptions); Console.WriteLine(" Compiler warning level: {0}", langCompilerConfig.WarningLevel); Console.WriteLine(); } } } }
- SecurityPermission para llamar a los miembros de CompilerInfo. Valor de la petición: LinkDemand; Conjuntos de permisos con nombre: FullTrust.
Windows 98, Windows 2000 SP4, Windows Millennium, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition
.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.
Nota