CompilerInfo 类

定义

表示语言提供程序的配置设置。 此类不能被继承。

public ref class CompilerInfo sealed
public sealed class CompilerInfo
type CompilerInfo = class
Public NotInheritable Class CompilerInfo
继承
CompilerInfo

示例

下面的代码示例显示语言提供程序配置设置。 命令行参数用于指定语言、文件扩展名或提供程序类型。 对于给定的输入,该示例确定相应的语言提供程序并显示配置的语言编译器设置。

// Command-line argument examples:
//      - 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.dll>
#using <System.Xml.dll>

using namespace System;
using namespace System::Globalization;
using namespace System::CodeDom;
using namespace System::CodeDom::Compiler;
using namespace Microsoft::CSharp;
using namespace Microsoft::VisualBasic;
using namespace System::Configuration;
using namespace System::Security::Permissions;

namespace CodeDomCompilerInfoSample
{
   [PermissionSet(SecurityAction::Demand, Name="FullTrust")]
   public ref class CompilerInfoSample
   {
   public:
      static void Main( array<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();
         if ( queryCommand->Equals( "LANGUAGE" ) )
             DisplayCompilerInfoForLanguage( queryArg );        // Display compiler information for input language.
         else if ( queryCommand->Equals( "EXTENSION" ) )
             DisplayCompilerInfoUsingExtension( queryArg );     // Display compiler information for input file extension.
         else if ( queryCommand->Equals( "CONFIG" ) )
             DisplayCompilerInfoForConfigLanguage( queryArg );  // Display settings for the configured language provider.
         else if ( queryCommand->Equals( "ALL" ) )
             DisplayAllCompilerInfo();             // Display compiler information for all configured language providers.
         else
         {
            // 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();
         }
      }


   private:
      static void DisplayCSharpCompilerInfo()
      {
         // Get the provider for Microsoft.CSharp
//         CodeDomProvider^ provider = CodeDomProvider.CreateProvider("CSharp");
         CodeDomProvider^ provider = CodeDomProvider::CreateProvider("CSharp");

         if ( provider )
         {
            // 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 = CodeDomProvider.CreateProvider("VisualBasic");
         CodeDomProvider^ provider = CodeDomProvider::CreateProvider("VisualBasic");
         if ( provider ) // 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("JScript");
            provider = CodeDomProvider::CreateProvider("JScript");
            if ( provider )
            {
               // 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 ( ConfigurationException^ e ) 
         {
            // The JScript language provider was not found.
            Console::WriteLine( "There is no configured JScript language provider." );
         }

      }

      static void DisplayCompilerInfoUsingExtension( String^ fileExtension )
      {
         if (  !fileExtension->StartsWith(  "." ) )
            fileExtension = String::Concat( ".", fileExtension );

         // Get the language associated with the file extension.
         CodeDomProvider^ provider = nullptr;
         if ( CodeDomProvider::IsDefinedExtension( fileExtension ) )
         {
            String^ language = CodeDomProvider::GetLanguageFromExtension( fileExtension );
            if ( language )
               Console::WriteLine( "The language \"{0}\" is associated with file extension \"{1}\"\n",
                                    language, fileExtension );

            // Check for a corresponding language provider.
            if ( language && CodeDomProvider::IsDefinedLanguage( language ) )
            {
               provider = CodeDomProvider::CreateProvider( language );
               if ( provider )
               {
                  // Display information about this language provider.
                  Console::WriteLine( "Language provider:  {0}\n", provider->ToString() );
                  
                  // Get the compiler settings for this language.
                  CompilerInfo^ langCompilerInfo = CodeDomProvider::GetCompilerInfo( language );
                  if ( langCompilerInfo )
                  {
                     CompilerParameters^ langCompilerConfig = langCompilerInfo->CreateDefaultCompilerParameters();
                     if ( langCompilerConfig )
                     {
                        Console::WriteLine( "  Compiler options:        {0}", langCompilerConfig->CompilerOptions );
                        Console::WriteLine( "  Compiler warning level:  {0}", langCompilerConfig->WarningLevel.ToString() );
                     }
                  }
               }
            }
         }

         if ( provider == nullptr )  // 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 = nullptr;
         
         // Check for a provider corresponding to the input language.  
         if ( CodeDomProvider::IsDefinedLanguage( language ) )
         {
            provider = CodeDomProvider::CreateProvider( language );
            if ( provider )
            {
               // 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 );
               if ( langCompilerInfo )
               {
                  CompilerParameters^ langCompilerConfig = langCompilerInfo->CreateDefaultCompilerParameters();
                  if ( langCompilerConfig )
                  {
                     Console::WriteLine( "  Compiler options:        {0}", langCompilerConfig->CompilerOptions );
                     Console::WriteLine( "  Compiler warning level:  {0}", langCompilerConfig->WarningLevel.ToString() );
                  }
               }
            }
         }

         if ( provider == nullptr )  // 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 )
      {
         CodeDomProvider^ provider = nullptr;
         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.
            provider = dynamic_cast<CodeDomProvider^>(Activator::CreateInstance( info->CodeDomProviderType ));
            if ( provider )
            {
               // 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();
               if ( langCompilerConfig )
               {
                  Console::WriteLine( "  Compiler options:        {0}", langCompilerConfig->CompilerOptions );
                  Console::WriteLine( "  Compiler warning level:  {0}", langCompilerConfig->WarningLevel.ToString() );
               }
            }
         }

         if ( provider == nullptr ) // 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()
      {
         array<CompilerInfo^>^allCompilerInfo = CodeDomProvider::GetAllCompilerInfo();
         for ( int i = 0; i < allCompilerInfo->Length; i++ )
         {
            String^ defaultLanguage;
            String^ defaultExtension;
            CompilerInfo^ info = allCompilerInfo[ i ];
            CodeDomProvider^ provider = nullptr;
            if ( info )
               provider = info->CreateProvider();

            if ( provider )
            {
               // Display information about this configured provider.
               Console::WriteLine( "Language provider:  {0}", provider->ToString() );
               Console::WriteLine();
               Console::WriteLine( "  Supported file extension(s):" );
               array<String^>^extensions = info->GetExtensions();
               for ( int i = 0; i < extensions->Length; i++ )
                   Console::WriteLine( "    {0}", extensions[ i ] );

               defaultExtension = provider->FileExtension;
               if (  !defaultExtension->StartsWith( "." ) )
                   defaultExtension = String::Concat( ".", defaultExtension );

               Console::WriteLine( "  Default file extension:  {0}\n", defaultExtension );
               Console::WriteLine( "  Supported language(s):" );
               array<String^>^languages = info->GetLanguages();
               for ( int i = 0; i < languages->Length; i++ )
                   Console::WriteLine( "    {0}", languages[ i ] );

               defaultLanguage = CodeDomProvider::GetLanguageFromExtension( defaultExtension );
               Console::WriteLine(  "  Default language:        {0}", defaultLanguage );
               Console::WriteLine();
               
               // Get the compiler settings for this provider.
               CompilerParameters^ langCompilerConfig = info->CreateDefaultCompilerParameters();
               if ( langCompilerConfig )
               {
                  Console::WriteLine( "  Compiler options:        {0}", langCompilerConfig->CompilerOptions );
                  Console::WriteLine( "  Compiler warning level:  {0}", langCompilerConfig->WarningLevel.ToString() );
               }
            }

         }
      }

   };

}


// The main entry point for the application.

[STAThread]
int main( int argc, char *argv[] )
{
    CodeDomCompilerInfoSample::CompilerInfoSample::Main( Environment::GetCommandLineArgs() );
    Console::WriteLine("\n\nPress ENTER to return");
    Console::ReadLine();
}
// Command-line argument examples:
//      - 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 = CodeDomProvider.CreateProvider("CSharp");

            // 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 = CodeDomProvider.CreateProvider("VisualBasic");

            // 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();
            }
        }
    }
}
' Command-line argument examples:
'      - 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.

Imports System.IO
Imports System.Globalization
Imports System.CodeDom
Imports System.CodeDom.Compiler
Imports Microsoft.CSharp
Imports System.ComponentModel

Namespace CodeDomCompilerInfoSample

   Class CompilerInfoSample

      <STAThread()>  _
      Public Shared Sub Main(ByVal args() As String)

        Dim queryCommand As String = ""
        Dim queryArg As String = ""
        Dim iNumArguments As Integer = args.Length
        
        ' Get input command-line arguments.
        If iNumArguments > 0 Then
            queryCommand = args(0).ToUpper(CultureInfo.InvariantCulture)
            
            If iNumArguments > 1 Then
                queryArg = args(1)
            End If
        End If
        
        ' Determine which method to call.
        Console.WriteLine()
        Select Case queryCommand
            Case "LANGUAGE"
                ' Display compiler information for input language.
                DisplayCompilerInfoForLanguage(queryArg)
            Case "EXTENSION"
                ' Display compiler information for input file extension.
                DisplayCompilerInfoUsingExtension(queryArg)
            Case "CONFIG"
                ' Display settings for the configured language provider.
                DisplayCompilerInfoForConfigLanguage(queryArg)
            Case "ALL"
                ' Display compiler information for all configured 
                ' language providers.
                DisplayAllCompilerInfo()
            Case Else
                ' 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()
        End Select

      End Sub
      
      
      Shared Sub DisplayCSharpCompilerInfo()
         
         ' Get the provider for Microsoft.CSharp
            Dim provider = CodeDomProvider.CreateProvider("CSharp")
         
         ' 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()
      End Sub
      
      
      Shared Sub DisplayVBCompilerInfo()
         ' Get the provider for Microsoft.VisualBasic
            Dim provider = CodeDomProvider.CreateProvider("VisualBasic")
         
         ' 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()
      End Sub
      
      
      Shared Sub DisplayJScriptCompilerInfo()
         ' Get the provider for JScript.
         Dim provider As CodeDomProvider
         
         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 e As System.Configuration.ConfigurationException
            ' The JScript language provider was not found.
            Console.WriteLine("There is no configured JScript language provider.")
         End Try

      End Sub
      
      Shared Sub DisplayCompilerInfoUsingExtension(fileExtension As String)
         If Not fileExtension.StartsWith(".") Then
            fileExtension = "." + fileExtension
         End If

         ' Get the language associated with the file extension.
         If CodeDomProvider.IsDefinedExtension(fileExtension) Then
            Dim provider As CodeDomProvider
            Dim language As String = CodeDomProvider.GetLanguageFromExtension(fileExtension)
            
            Console.WriteLine("The language ""{0}"" is associated with file extension ""{1}""", _
                language, fileExtension)
            Console.WriteLine()
            
            ' Check for a corresponding language provider.
            If CodeDomProvider.IsDefinedLanguage(language) Then
               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.
               Dim langCompilerInfo As CompilerInfo = CodeDomProvider.GetCompilerInfo(language)
               Dim langCompilerConfig As CompilerParameters = langCompilerInfo.CreateDefaultCompilerParameters()
               
               Console.WriteLine("  Compiler options:        {0}", _
                   langCompilerConfig.CompilerOptions)
               Console.WriteLine("  Compiler warning level:  {0}", _
                   langCompilerConfig.WarningLevel)
            End If
         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)
         End If
      End Sub
     
      
      Shared Sub DisplayCompilerInfoForLanguage(language As String)
         Dim provider As CodeDomProvider
         
         ' Check for a provider corresponding to the input language.  
         If CodeDomProvider.IsDefinedLanguage(language) Then
            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.
            Dim langCompilerInfo As CompilerInfo = CodeDomProvider.GetCompilerInfo(language)
            Dim langCompilerConfig As CompilerParameters = 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)
         End If

      End Sub
      
      Shared Sub DisplayCompilerInfoForConfigLanguage(configLanguage As String)
         Dim info As CompilerInfo = CodeDomProvider.GetCompilerInfo(configLanguage)
         
         ' Check whether there is a provider configured for this language.
         If info.IsCodeDomProviderTypeValid Then
            ' Get a provider instance using the configured type information.
            Dim provider As CodeDomProvider
            provider = CType(Activator.CreateInstance(info.CodeDomProviderType), CodeDomProvider)
            
            ' 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.
            Dim langCompilerConfig As CompilerParameters = 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)
         End If
      End Sub
      
      
      Shared Sub DisplayAllCompilerInfo()
         Dim allCompilerInfo As CompilerInfo() = CodeDomProvider.GetAllCompilerInfo()
         Dim info As CompilerInfo
         For Each info In  allCompilerInfo

            Dim defaultLanguage As String
            Dim defaultExtension As String

            Dim provider As CodeDomProvider = info.CreateProvider()
            
            ' Display information about this configured provider.
            Console.WriteLine("Language provider:  {0}", _
                provider.ToString())
            Console.WriteLine()
            
            Console.WriteLine("  Supported file extension(s):")
            Dim extension As String
            For Each extension In info.GetExtensions()
               Console.WriteLine("    {0}", extension)
            Next extension
            
            defaultExtension = provider.FileExtension
            If Not defaultExtension.StartsWith(".") Then
               defaultExtension = "." + defaultExtension
            End If
 
            Console.WriteLine("  Default file extension:  {0}", _
              defaultExtension)
            Console.WriteLine()
            
            Console.WriteLine("  Supported language(s):")
            Dim language As String
            For Each language In  info.GetLanguages()
               Console.WriteLine("    {0}", language)
            Next language
            defaultLanguage = CodeDomProvider.GetLanguageFromExtension(defaultExtension)
            Console.WriteLine("  Default language:        {0}", _
               defaultLanguage)
            Console.WriteLine()
            
            ' Get the compiler settings for this provider.
            Dim langCompilerConfig As CompilerParameters = info.CreateDefaultCompilerParameters()
            
            Console.WriteLine("  Compiler options:        {0}", _
                langCompilerConfig.CompilerOptions)
            Console.WriteLine("  Compiler warning level:  {0}", _
                langCompilerConfig.WarningLevel)
            Console.WriteLine()
         Next info
      End Sub

   End Class
End Namespace 'CodeDomCompilerInfoSample

注解

CompilerInfo使用 类可以确定是在计算机上配置了实现,还是CodeDomProvider检查特定语言提供程序的配置和编译器设置。

计算机配置文件中的 system.codedom> 元素包含语言提供程序和编译器配置设置。< 每个配置的语言提供程序都有相应的编译器配置元素。 每个元素定义 CodeDomProvider 实现类型、支持的语言名称、支持的文件扩展名和编译器参数。

.NET Framework在计算机配置文件中定义初始编译器设置。 开发人员和编译器供应商可以添加新 CodeDomProvider 实现的配置设置。

CompilerInfo 提供对计算机配置文件中这些设置的只读访问权限。 GetLanguages使用 、 GetExtensionsCodeDomProviderType 成员检查语言提供程序的相应配置属性。 CreateDefaultCompilerParameters使用 方法获取语言提供程序的编译器选项和警告级别属性值。

有关配置文件中语言提供程序设置的详细信息,请参阅 编译器和语言提供程序设置架构

注意

此类包含在类级别应用于所有成员的链接需求。 SecurityException当直接调用方没有完全信任权限时,将引发 。 有关链接需求的详细信息,请参阅 链接需求

属性

CodeDomProviderType

获取已配置的 CodeDomProvider 实现的类型。

IsCodeDomProviderTypeValid

返回一个值,该值指示是否在计算机上配置了语言提供程序实现。

方法

CreateDefaultCompilerParameters()

获取语言提供程序实现的配置的编译器设置。

CreateProvider()

返回当前语言提供程序设置的 CodeDomProvider 实例。

CreateProvider(IDictionary<String,String>)

返回当前语言提供程序设置和指定选项的 CodeDomProvider 实例。

Equals(Object)

确定指定的对象是否表示与当前 CompilerInfo 相同的语言提供程序和编译器设置。

GetExtensions()

返回受语言提供程序支持的文件扩展名。

GetHashCode()

返回当前实例的哈希代码。

GetLanguages()

获取受语言提供程序支持的语言名称。

GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
ToString()

返回表示当前对象的字符串。

(继承自 Object)

适用于

另请参阅