この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

CodeDomProvider クラス

 

公開日: 2016年10月

基本クラスを提供 CodeDomProvider 実装します。 このクラスは抽象クラスです。

名前空間:   System.CodeDom.Compiler
アセンブリ:  System (System.dll 内)

System.Object
  System.MarshalByRefObject
    System.ComponentModel.Component
      System.CodeDom.Compiler.CodeDomProvider
        Microsoft.CSharp.CSharpCodeProvider
        Microsoft.JScript.JScriptCodeProvider
        Microsoft.VisualBasic.VBCodeProvider

[ComVisibleAttribute(true)]
[PermissionSetAttribute(SecurityAction.LinkDemand, Name = "FullTrust")]
[PermissionSetAttribute(SecurityAction.InheritanceDemand, Name = "FullTrust")]
public abstract class CodeDomProvider : Component

名前説明
System_CAPS_protmethodCodeDomProvider()

CodeDomProvider クラスの新しいインスタンスを初期化します。

名前説明
System_CAPS_protpropertyCanRaiseEvents

コンポーネントがイベントを発生させることができるかどうかを示す値を取得します。(Component から継承されます。)

System_CAPS_pubpropertyContainer

取得、 IContainer を含む、 Componentです。(Component から継承されます。)

System_CAPS_protpropertyDesignMode

示す値を取得するかどうか、 Component デザイン モードになっています。(Component から継承されます。)

System_CAPS_protpropertyEvents

これに関連付けられているイベント ハンドラーの一覧を取得 Componentします。(Component から継承されます。)

System_CAPS_pubpropertyFileExtension

現在の言語でソース コード ファイルを使用する既定のファイル名拡張子を取得します。

System_CAPS_pubpropertyLanguageOptions

言語機能識別子を取得します。

System_CAPS_pubpropertySite

取得または設定、 ISiteComponentです。(Component から継承されます。)

名前説明
System_CAPS_pubmethodCompileAssemblyFromDom(CompilerParameters, CodeCompileUnit[])

に基づいてアセンブリをコンパイル、 System.CodeDom の指定した配列に格納されているツリー CodeCompileUnit オブジェクトを指定したコンパイラ設定を使用します。

System_CAPS_pubmethodCompileAssemblyFromFile(CompilerParameters, String[])

指定したコンパイラ設定を使用して、指定したファイルに含まれるソース コードからアセンブリをコンパイルします。

System_CAPS_pubmethodCompileAssemblyFromSource(CompilerParameters, String[])

指定されたソース コードを含む、指定したコンパイラ設定を使用して文字列の配列からアセンブリをコンパイルします。

System_CAPS_pubmethodCreateCompiler()

互換性のために残されています。派生クラスでオーバーライドされた場合は、新しいコード コンパイラを作成します。

System_CAPS_pubmethodCreateEscapedIdentifier(String)

指定された値に対して、エスケープされた識別子を作成します。

System_CAPS_pubmethodCreateGenerator()

互換性のために残されています。派生クラスでオーバーライドされた場合は、新しいコード ジェネレーターを作成します。

System_CAPS_pubmethodCreateGenerator(String)

派生クラスでオーバーライドされた場合は、出力の指定したファイル名を使用して、新しいコード ジェネレーターを作成します。

System_CAPS_pubmethodCreateGenerator(TextWriter)

派生クラスでオーバーライドされた場合は、指定して、新しいコード ジェネレーターを作成 TextWriter 出力用です。

System_CAPS_pubmethodCreateObjRef(Type)

リモート オブジェクトとの通信に使用するプロキシの生成に必要なすべての関連情報を格納しているオブジェクトを作成します。(MarshalByRefObject から継承されます。)

System_CAPS_pubmethodCreateParser()

互換性のために残されています。派生クラスでオーバーライドされた場合は、新しいコード パーサーを作成します。

System_CAPS_pubmethodSystem_CAPS_staticCreateProvider(String)

取得、 CodeDomProvider 指定した言語のインスタンス。

System_CAPS_pubmethodSystem_CAPS_staticCreateProvider(String, IDictionary<String, String>)

取得、 CodeDomProvider インスタンスの言語とプロバイダーのオプションを指定します。

System_CAPS_pubmethodCreateValidIdentifier(String)

指定した値の有効な識別子を作成します。

System_CAPS_pubmethodDispose()

Component によって使用されているすべてのリソースを解放します。(Component から継承されます。)

System_CAPS_protmethodDispose(Boolean)

Component によって使用されているアンマネージ リソースを解放し、オプションでマネージ リソースも解放します。(Component から継承されます。)

System_CAPS_pubmethodEquals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。(Object から継承されます。)

System_CAPS_protmethodFinalize()

Component がガベージ コレクションによって回収される前に、アンマネージ リソースを解放し、その他のクリーンアップ操作を実行します。(Component から継承されます。)

System_CAPS_pubmethodGenerateCodeFromCompileUnit(CodeCompileUnit, TextWriter, CodeGeneratorOptions)

指定したコード ドキュメント オブジェクト モデル (CodeDOM) コンパイル単位のコードを生成し、指定したオプションを使用して、指定したテキスト ライターにします。

System_CAPS_pubmethodGenerateCodeFromExpression(CodeExpression, TextWriter, CodeGeneratorOptions)

指定のコード ドキュメント オブジェクト モデル (CodeDOM) 式のコードを生成し、指定したオプションを使用して、指定したテキスト ライターに送信します。

System_CAPS_pubmethodGenerateCodeFromMember(CodeTypeMember, TextWriter, CodeGeneratorOptions)

指定したコード ドキュメント オブジェクト モデル (CodeDOM) のメンバー宣言のコードを生成し、指定したオプションを使用して、指定したテキスト ライターに送信します。

System_CAPS_pubmethodGenerateCodeFromNamespace(CodeNamespace, TextWriter, CodeGeneratorOptions)

コード ドキュメント オブジェクト モデル (CodeDOM) の指定した名前空間のコードを生成し、指定したオプションを使用して、指定したテキスト ライターに送信します。

System_CAPS_pubmethodGenerateCodeFromStatement(CodeStatement, TextWriter, CodeGeneratorOptions)

指定したコード ドキュメント オブジェクト モデル (CodeDOM) ステートメントのコードを生成し、指定したオプションを使用して、指定したテキスト ライターに送信します。

System_CAPS_pubmethodGenerateCodeFromType(CodeTypeDeclaration, TextWriter, CodeGeneratorOptions)

指定したコード ドキュメント オブジェクト モデル (CodeDOM) の型宣言のコードを生成し、指定したオプションを使用して、指定したテキスト ライターに送信します。

System_CAPS_pubmethodSystem_CAPS_staticGetAllCompilerInfo()

このコンピューターにプロバイダーおよびコンパイラの構成設定、言語を返します。

System_CAPS_pubmethodSystem_CAPS_staticGetCompilerInfo(String)

指定した言語のプロバイダーおよびコンパイラの構成設定、言語を返します。

System_CAPS_pubmethodGetConverter(Type)

取得、 TypeConverter の指定されたデータ型。

System_CAPS_pubmethodGetHashCode()

既定のハッシュ関数として機能します。(Object から継承されます。)

System_CAPS_pubmethodSystem_CAPS_staticGetLanguageFromExtension(String)

指定したファイル名拡張子に関連付けられている言語名で構成されている形式で返します、 CodeDomProvider コンパイラ構成セクション。

System_CAPS_pubmethodGetLifetimeService()

このインスタンスの有効期間ポリシーを制御する現在の有効期間サービス オブジェクトを取得します。(MarshalByRefObject から継承されます。)

System_CAPS_protmethodGetService(Type)

Component またはその Container で提供されるサービスを表すオブジェクトを返します。(Component から継承されます。)

System_CAPS_pubmethodGetType()

現在のインスタンスの Type を取得します。(Object から継承されます。)

System_CAPS_pubmethodGetTypeOutput(CodeTypeReference)

指定された型を取得 CodeTypeReferenceします。

System_CAPS_pubmethodInitializeLifetimeService()

このインスタンスの有効期間ポリシーを制御する有効期間サービス オブジェクトを取得します。(MarshalByRefObject から継承されます。)

System_CAPS_pubmethodSystem_CAPS_staticIsDefinedExtension(String)

ファイル名拡張子がある関連付けられているかどうかをテスト CodeDomProvider コンピューター上で構成を実装します。

System_CAPS_pubmethodSystem_CAPS_staticIsDefinedLanguage(String)

言語があるかどうかをテスト、 CodeDomProvider コンピューター上で構成を実装します。

System_CAPS_pubmethodIsValidIdentifier(String)

指定した値が現在の言語で有効な識別子であるかどうかを示す値を返します。

System_CAPS_protmethodMemberwiseClone()

現在の Object の簡易コピーを作成します。(Object から継承されます。)

System_CAPS_protmethodMemberwiseClone(Boolean)

現在の簡易コピーを作成MarshalByRefObjectオブジェクト。(MarshalByRefObject から継承されます。)

System_CAPS_pubmethodParse(TextReader)

指定したテキストのストリームから読み取ったコードをコンパイル、 CodeCompileUnitです。

System_CAPS_pubmethodSupports(GeneratorSupport)

返します。 指定したコードの生成をサポートしているかどうかを示す値を指定します。

System_CAPS_pubmethodToString()

返します。、 String の名前を含む、 Component, 、存在する場合。 このメソッドはオーバーライドできません。(Component から継承されます。)

名前説明
System_CAPS_pubeventDisposed

呼び出しによってコンポーネントが破棄されるときに発生、 Dispose メソッドです。(Component から継承されます。)

A CodeDomProvider を作成し、コード ジェネレーターおよびコード コンパイラのインスタンスを取得できます。 コード ジェネレーターは、特定の言語でコードを生成するために使用でき、コード コンパイラを使用してアセンブリにコードをコンパイルすることができます。

System_CAPS_noteメモ

.NET Framework&2;.0, 、メソッドで使用できるコード ジェネレーターおよびコード コンパイラは、コード プロバイダーから直接使用します。 呼び出す必要はありません CreateGenerator または CreateCompiler にアクセスするメソッド、およびこれらのメソッドは不使用とマークします。 これは、新しいコード プロバイダーの実装だけでなく、既存の適用されます。

A CodeDomProvider 実装通常インターフェイスを提供コードの生成、コード コンパイルのコードを生成して、1 つのプログラミング言語のコンパイルを管理します。 複数の言語がサポートされている CodeDomProvider に付属している実装、 Windows Software Development Kit (SDK)です。 これらの言語には、c#、Visual Basic、C++、および JScript が含まれます。 実装できる開発者またはコンパイラ販売元、 ICodeGeneratorICodeCompiler インターフェイスおよび提供、 CodeDomProvider CodeDOM 他のプログラミング言語のサポートを拡張します。

<system.codedom> 要素 ファイル (Machine.config) がの構成設定を追加するには、開発者やコンパイラ ベンダー メカニズムを提供するマシンの構成の追加 CodeDomProvider 実装します。

CodeDomProvider クラスには静的メソッドを検出し、列挙、 CodeDomProvider 、コンピューター上の実装です。 GetAllCompilerInfo メソッドは、すべての設定を返します。 CodeDomProvider コンピューターに実装します。 GetCompilerInfo メソッドは、特定の設定を返します CodeDomProvider プログラミング言語の名前に基づく実装します。 CreateProvider メソッドのインスタンスを返す、 CodeDomProvider 言語固有の実装です。

構成ファイルの言語プロバイダー設定の詳細については、次を参照してください。 コンパイラおよび言語プロバイダー設定のスキーマします。

System_CAPS_noteメモ

このクラスは、リンク確認要求し、クラス レベルで継承確認要求を使用します。 A SecurityException が、直前の呼び出し元または派生クラスのいずれかに完全信頼のアクセス許可がない場合にスローされます。 セキュリティ要求の詳細については、「 リンク確認要求継承確認要求します。

継承時の注意:

.NET Framework バージョン 1.0 および 1.1 では、コード プロバイダーの構成の実装の CodeDomProvider, 、ICodeGenerator, 、ICodeParser, 、および ICodeCompilerです。.NET Framework 2.0, 、 CreateGenerator, 、CreateParser, 、および CreateCompiler メソッドは廃止されましたが、およびメソッドの ICodeGeneratorICodeCompiler で直接利用可能な CodeDomProvider クラスです。 コード プロバイダーの実装でこれらのメソッドをオーバーライドして、基本メソッドを呼び出さないでください。

次のサンプル プログラムを生成して"Hello World"を使用して印刷するプログラムの CodeDOM モデルに基づきソース コードをコンパイル、 Console クラスです。 Windows フォームのユーザー インターフェイスを提供します。 ユーザーがプログラミング言語をいくつかの選択範囲からターゲットを選択します。 c#、Visual Basic、および JScript です。

using System;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Collections;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
using Microsoft.CSharp;
using Microsoft.VisualBasic;
using Microsoft.JScript;

// This example demonstrates building a Hello World program graph 
// using System.CodeDom elements. It calls code generator and
// code compiler methods to build the program using CSharp, VB, or
// JScript.  A Windows Forms interface is included. Note: Code
// must be compiled and linked with the Microsoft.JScript assembly. 
namespace CodeDOMExample
{
    class CodeDomExample
    {
        // Build a Hello World program graph using 
        // System.CodeDom types.
        public static CodeCompileUnit BuildHelloWorldGraph()
        {
            // Create a new CodeCompileUnit to contain 
            // the program graph.
            CodeCompileUnit compileUnit = new CodeCompileUnit();

            // Declare a new namespace called Samples.
            CodeNamespace samples = new CodeNamespace("Samples");
            // Add the new namespace to the compile unit.
            compileUnit.Namespaces.Add(samples);

            // Add the new namespace import for the System namespace.
            samples.Imports.Add(new CodeNamespaceImport("System"));

            // Declare a new type called Class1.
            CodeTypeDeclaration class1 = new CodeTypeDeclaration("Class1");
            // Add the new type to the namespace type collection.
            samples.Types.Add(class1);

            // Declare a new code entry point method.
            CodeEntryPointMethod start = new CodeEntryPointMethod();

            // Create a type reference for the System.Console class.
            CodeTypeReferenceExpression csSystemConsoleType = new CodeTypeReferenceExpression("System.Console");

            // Build a Console.WriteLine statement.
            CodeMethodInvokeExpression cs1 = new CodeMethodInvokeExpression(
                csSystemConsoleType, "WriteLine",
                new CodePrimitiveExpression("Hello World!"));

            // Add the WriteLine call to the statement collection.
            start.Statements.Add(cs1);

            // Build another Console.WriteLine statement.
            CodeMethodInvokeExpression cs2 = new CodeMethodInvokeExpression(
                csSystemConsoleType, "WriteLine",
                new CodePrimitiveExpression("Press the Enter key to continue."));

            // Add the WriteLine call to the statement collection.
            start.Statements.Add(cs2);

            // Build a call to System.Console.ReadLine.
            CodeMethodInvokeExpression csReadLine = new CodeMethodInvokeExpression(
                csSystemConsoleType, "ReadLine");

            // Add the ReadLine statement.
            start.Statements.Add(csReadLine);

            // Add the code entry point method to
            // the Members collection of the type.
            class1.Members.Add(start);

            return compileUnit;
        }

        public static void GenerateCode(CodeDomProvider provider,
            CodeCompileUnit compileunit)
        {
            // Build the source file name with the appropriate
            // language extension.
            String sourceFile;
            if (provider.FileExtension[0] == '.')
            {
                sourceFile = "TestGraph" + provider.FileExtension;
            }
            else
            {
                sourceFile = "TestGraph." + provider.FileExtension;
            }

            // Create an IndentedTextWriter, constructed with
            // a StreamWriter to the source file.
            IndentedTextWriter tw = new IndentedTextWriter(new StreamWriter(sourceFile, false), "    ");
            // Generate source code using the code generator.
            provider.GenerateCodeFromCompileUnit(compileunit, tw, new CodeGeneratorOptions());
            // Close the output file.
            tw.Close();
        }

        public static CompilerResults CompileCode(CodeDomProvider provider,
                                                  String sourceFile,
                                                  String exeFile)
        {
            // Configure a CompilerParameters that links System.dll
            // and produces the specified executable file.
            String[] referenceAssemblies = { "System.dll" };
            CompilerParameters cp = new CompilerParameters(referenceAssemblies,
                                                           exeFile, false);
            // Generate an executable rather than a DLL file.
            cp.GenerateExecutable = true;

            // Invoke compilation.
            CompilerResults cr = provider.CompileAssemblyFromFile(cp, sourceFile);
            // Return the results of compilation.
            return cr;
        }
    }

    public class CodeDomExampleForm : System.Windows.Forms.Form
    {
        private System.Windows.Forms.Button run_button = new System.Windows.Forms.Button();
        private System.Windows.Forms.Button compile_button = new System.Windows.Forms.Button();
        private System.Windows.Forms.Button generate_button = new System.Windows.Forms.Button();
        private System.Windows.Forms.TextBox textBox1 = new System.Windows.Forms.TextBox();
        private System.Windows.Forms.ComboBox comboBox1 = new System.Windows.Forms.ComboBox();
        private System.Windows.Forms.Label label1 = new System.Windows.Forms.Label();

        private void generate_button_Click(object sender, System.EventArgs e)
        {
            CodeDomProvider provider = GetCurrentProvider();
            CodeDomExample.GenerateCode(provider, CodeDomExample.BuildHelloWorldGraph());

            // Build the source file name with the appropriate
            // language extension.
            String sourceFile;
            if (provider.FileExtension[0] == '.')
            {
                sourceFile = "TestGraph" + provider.FileExtension;
            }
            else
            {
                sourceFile = "TestGraph." + provider.FileExtension;
            }

            // Read in the generated source file and
            // display the source text.
            StreamReader sr = new StreamReader(sourceFile);
            textBox1.Text = sr.ReadToEnd();
            sr.Close();
        }

        private void compile_button_Click(object sender, System.EventArgs e)
        {
            CodeDomProvider provider = GetCurrentProvider();

            // Build the source file name with the appropriate
            // language extension.
            String sourceFile;
            if (provider.FileExtension[0] == '.')
            {
                sourceFile = "TestGraph" + provider.FileExtension;
            }
            else
            {
                sourceFile = "TestGraph." + provider.FileExtension;
            }

            // Compile the source file into an executable output file.
            CompilerResults cr = CodeDomExample.CompileCode(provider,
                                                            sourceFile,
                                                            "TestGraph.exe");

            if (cr.Errors.Count > 0)
            {
                // Display compilation errors.
                textBox1.Text = "Errors encountered while building " +
                                sourceFile + " into " + cr.PathToAssembly + ": \r\n\n";
                foreach (CompilerError ce in cr.Errors)
                    textBox1.AppendText(ce.ToString() + "\r\n");
                run_button.Enabled = false;
            }
            else
            {
                textBox1.Text = "Source " + sourceFile + " built into " +
                                cr.PathToAssembly + " with no errors.";
                run_button.Enabled = true;
            }
        }

        private void run_button_Click(object sender,
            System.EventArgs e)
        {
            Process.Start("TestGraph.exe");
        }

        private CodeDomProvider GetCurrentProvider()
        {
            CodeDomProvider provider;
            switch ((string)this.comboBox1.SelectedItem)
            {
                case "CSharp":
                    provider = CodeDomProvider.CreateProvider("CSharp");
                    break;
                case "Visual Basic":
                    provider = CodeDomProvider.CreateProvider("VisualBasic");
                    break;
                case "JScript":
                    provider = CodeDomProvider.CreateProvider("JScript");
                    break;
                default:
                    provider = CodeDomProvider.CreateProvider("CSharp");
                    break;
            }
            return provider;
        }

        public CodeDomExampleForm()
        {
            this.SuspendLayout();
            // Set properties for label1
            this.label1.Location = new System.Drawing.Point(395, 20);
            this.label1.Size = new Size(180, 22);
            this.label1.Text = "Select a programming language:";
            // Set properties for comboBox1
            this.comboBox1.Location = new System.Drawing.Point(560, 16);
            this.comboBox1.Size = new Size(190, 23);
            this.comboBox1.Name = "comboBox1";
            this.comboBox1.Items.AddRange(new string[] { "CSharp", "Visual Basic", "JScript" });
            this.comboBox1.Anchor = System.Windows.Forms.AnchorStyles.Left
                                    | System.Windows.Forms.AnchorStyles.Right
                                    | System.Windows.Forms.AnchorStyles.Top;
            this.comboBox1.SelectedIndex = 0;
            // Set properties for generate_button. 
            this.generate_button.Location = new System.Drawing.Point(8, 16);
            this.generate_button.Name = "generate_button";
            this.generate_button.Size = new System.Drawing.Size(120, 23);
            this.generate_button.Text = "Generate Code";
            this.generate_button.Click += new System.EventHandler(this.generate_button_Click);
            // Set properties for compile_button.
            this.compile_button.Location = new System.Drawing.Point(136, 16);
            this.compile_button.Name = "compile_button";
            this.compile_button.Size = new System.Drawing.Size(120, 23);
            this.compile_button.Text = "Compile";
            this.compile_button.Click += new System.EventHandler(this.compile_button_Click);
            // Set properties for run_button.
            this.run_button.Enabled = false;
            this.run_button.Location = new System.Drawing.Point(264, 16);
            this.run_button.Name = "run_button";
            this.run_button.Size = new System.Drawing.Size(120, 23);
            this.run_button.Text = "Run";
            this.run_button.Click += new System.EventHandler(this.run_button_Click);
            // Set properties for textBox1.        
            this.textBox1.Anchor = (System.Windows.Forms.AnchorStyles.Top
                                     | System.Windows.Forms.AnchorStyles.Bottom
                                     | System.Windows.Forms.AnchorStyles.Left
                                     | System.Windows.Forms.AnchorStyles.Right);
            this.textBox1.Location = new System.Drawing.Point(8, 48);
            this.textBox1.Multiline = true;
            this.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
            this.textBox1.Name = "textBox1";
            this.textBox1.Size = new System.Drawing.Size(744, 280);
            this.textBox1.Text = "";
            // Set properties for the CodeDomExampleForm.
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
            this.ClientSize = new System.Drawing.Size(768, 340);
            this.MinimumSize = new System.Drawing.Size(750, 340);
            this.Controls.AddRange(new System.Windows.Forms.Control[] {this.textBox1, 
                this.run_button, this.compile_button, this.generate_button,
                this.comboBox1, this.label1 });
            this.Name = "CodeDomExampleForm";
            this.Text = "CodeDom Hello World Example";
            this.ResumeLayout(false);
        }

        protected override void Dispose(bool disposing)
        {
            base.Dispose(disposing);
        }

        [STAThread]
        static void Main()
        {
            Application.Run(new CodeDomExampleForm());
        }
    }
}

SecurityAction.LinkDemand

for full trust for the immediate caller. This class cannot be used by partially trusted code.

SecurityAction.InheritanceDemand

for full trust for inheritors. This class cannot be inherited by partially trusted code.

.NET Framework
1.1 以降で使用可能

この型のパブリック static (Visual Basic では Shared ) メンバーはスレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

トップに戻る
表示: