CompilerInfo CompilerInfo CompilerInfo CompilerInfo Class

定義

表示語言提供者的組態設定。Represents the configuration settings of a language provider. 這個類別無法被繼承。This class cannot be inherited.

public ref class CompilerInfo sealed
public sealed class CompilerInfo
type CompilerInfo = class
Public NotInheritable Class CompilerInfo
繼承
CompilerInfoCompilerInfoCompilerInfoCompilerInfo

範例

下列程式碼範例會顯示語言提供者設定。The following code example displays language provider configuration settings. 命令列引數是用來指定語言、檔案名副檔名或提供者類型。Command-line arguments are used to specify a language, file name extension, or provider type. 針對指定的輸入, 此範例會決定對應的語言提供者, 並顯示已設定的語言編譯器設定。For the given input, the example determines the corresponding language provider and displays the configured language compiler settings.

// 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

備註

您可以使用CodeDomProvider 類別來判斷電腦上是否已設定執行,或是檢查特定語言提供者的設定CompilerInfo和編譯器設定。Use the CompilerInfo class to determine whether a CodeDomProvider implementation is configured on the computer, or to examine the configuration and compiler settings for a specific language provider.

電腦設定檔中的 < > system.object 元素包含語言提供者和編譯器設定。The <system.codedom> Element in the machine configuration file contains the language provider and compiler configuration settings. 每個設定的語言提供者都有對應的編譯器設定元素。Each configured language provider has a corresponding compiler configuration element. 每個元素都CodeDomProvider定義了實類型、支援的語言名稱、支援的副檔名和編譯器參數。Each element defines the CodeDomProvider implementation type, supported language names, supported file name extensions, and compiler parameters.

.NET Framework 會定義電腦設定檔中的初始編譯器設定。The .NET Framework defines the initial compiler settings in the machine configuration file. 開發人員和編譯器廠商可以為新的 CodeDomProvider 實作新增組態設定。Developers and compiler vendors can add configuration settings for a new CodeDomProvider implementation.

CompilerInfo類別會提供電腦設定檔中這些設定的唯讀存取權。The CompilerInfo class provides read-only access to these settings in the machine configuration file. GetLanguages使用、 GetExtensions和成員來檢查語言提供者的對應設定屬性。CodeDomProviderTypeUse the GetLanguages, GetExtensions, and CodeDomProviderType members to examine the corresponding configuration attributes for a language provider. CreateDefaultCompilerParameters使用方法, 即可取得語言提供者的編譯器選項和警告層級屬性值。Use the CreateDefaultCompilerParameters method to obtain the compiler options and warning level attribute values for a language provider.

如需有關設定檔中語言提供者設定的詳細資訊, 請參閱編譯器和語言提供者設定架構For more details on language provider settings in the configuration file, see Compiler and Language Provider Settings Schema.

注意

此類別包含套用至所有成員之類別層級的連結要求。This class contains a link demand at the class level that applies to all members. 當立即呼叫端沒有完全信任許可權時,就會擲回。SecurityExceptionA SecurityException is thrown when the immediate caller does not have full-trust permission. 如需連結需求的詳細資訊, 請參閱連結需求For details about link demands, see Link Demands.

屬性

CodeDomProviderType CodeDomProviderType CodeDomProviderType CodeDomProviderType

取得已設定 CodeDomProvider 之實作的類型。Gets the type of the configured CodeDomProvider implementation.

IsCodeDomProviderTypeValid IsCodeDomProviderTypeValid IsCodeDomProviderTypeValid IsCodeDomProviderTypeValid

傳回值,指出是否已在電腦上設定語言提供者實作。Returns a value indicating whether the language provider implementation is configured on the computer.

方法

CreateDefaultCompilerParameters() CreateDefaultCompilerParameters() CreateDefaultCompilerParameters() CreateDefaultCompilerParameters()

取得語言提供者實作的已設定編譯器設定。Gets the configured compiler settings for the language provider implementation.

CreateProvider() CreateProvider() CreateProvider() CreateProvider()

傳回目前語言提供者設定的 CodeDomProvider 執行個體。Returns a CodeDomProvider instance for the current language provider settings.

CreateProvider(IDictionary<String,String>) CreateProvider(IDictionary<String,String>) CreateProvider(IDictionary<String,String>) CreateProvider(IDictionary<String,String>)

傳回目前語言提供者設定和指定之選項的 CodeDomProvider 執行個體。Returns a CodeDomProvider instance for the current language provider settings and specified options.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

判斷指定的物件是否表示與目前 CompilerInfo 相同的語言提供者和編譯器設定。Determines whether the specified object represents the same language provider and compiler settings as the current CompilerInfo.

GetExtensions() GetExtensions() GetExtensions() GetExtensions()

傳回語言提供者支援的副檔名。Returns the file name extensions supported by the language provider.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

傳回目前執行個體的雜湊碼。Returns the hash code for the current instance.

GetLanguages() GetLanguages() GetLanguages() GetLanguages()

取得語言提供者支援的語言名稱。Gets the language names supported by the language provider.

GetType() GetType() GetType() GetType()

取得目前執行個體的 TypeGets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

建立目前 Object 的淺層複本 (Shallow Copy)。Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

傳回代表目前物件的字串。Returns a string that represents the current object.

(Inherited from Object)

安全性

SecurityPermission
, 用於呼叫的CompilerInfo成員。for calling members of CompilerInfo. 需求值: LinkDemand;命名許可權集合: FullTrustDemand value: LinkDemand; Named Permission Sets: FullTrust.

適用於

另請參閱