英語で読む

次の方法で共有


CompilerInfo クラス

定義

言語プロバイダーの構成設定を表します。 このクラスは継承できません。

public sealed 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;
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();
            }
        }
    }
}

注釈

クラスを CompilerInfo 使用して、実装がコンピューターで構成されているかどうかを CodeDomProvider 判断するか、特定の言語プロバイダーの構成とコンパイラ設定を調べます。

マシン構成ファイルの system.codedom> 要素には、言語プロバイダーとコンパイラ構成設定が含まれています。< 構成された各言語プロバイダーには、対応するコンパイラ構成要素があります。 各要素は、実装の CodeDomProvider 種類、サポートされている言語名、サポートされているファイル名拡張子、コンパイラ パラメーターを定義します。

.NET Frameworkは、マシン構成ファイルの初期コンパイラ設定を定義します。 開発者やコンパイラ ベンダーは、新しい CodeDomProvider の実装のために構成設定を追加することができます。

クラスは CompilerInfo 、マシン構成ファイル内のこれらの設定への読み取り専用アクセスを提供します。 、、および CodeDomProviderType メンバーをGetLanguagesGetExtensions使用して、言語プロバイダーの対応する構成属性を調べます。 言語プロバイダーの 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)

適用対象

製品 バージョン
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9

こちらもご覧ください