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

BuildProvider クラス

 

公開日: 2016年10月

ASP.NET ビルド環境でソース コードを生成するためのプロパティとメソッドのセットを定義します。 このクラスは抽象クラスです。

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


public abstract class BuildProvider

名前説明
System_CAPS_protmethodBuildProvider()

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

名前説明
System_CAPS_pubpropertyCodeCompilerType

ビルド プロバイダーがカスタム ファイルの種類のソース コードを生成するために使用するコンパイラ タイプを表します。

System_CAPS_protpropertyReferencedAssemblies

ビルド プロバイダーによって生成されるソースをコンパイルするアセンブリを表します。

System_CAPS_protpropertyVirtualPath

このビルド プロバイダーの実装でビルドするファイルを表します。

System_CAPS_pubpropertyVirtualPathDependencies

ビルド プロバイダーがコードを生成する前に構築する必要がある仮想パスのコレクションを表します。

名前説明
System_CAPS_pubmethodEquals(Object)

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

System_CAPS_protmethodFinalize()

オブジェクトが、ガベージ コレクションによって収集される前に、リソースの解放とその他のクリーンアップ操作の実行を試みることができるようにします。(Object から継承されます。)

System_CAPS_pubmethodGenerateCode(AssemblyBuilder)

ビルド プロバイダーの仮想パスのソース コードを生成し、そのソース コードを指定のアセンブリ ビルダーに追加します。

System_CAPS_protmethodGetCodeCompileUnit(IDictionary)

生成された CodeDOM グラフのコンテナーを表します。

System_CAPS_pubmethodGetCustomString(CompilerResults)

この API は 製品 インフラストラクチャをサポートします。コードから直接使用するためのものではありません。 コンパイルしたアセンブリに保存される文字列を生成します。

System_CAPS_protmethodGetDefaultCompilerType()

アプリケーションでは、既定の言語のコンパイラ設定を返します。

System_CAPS_protmethodGetDefaultCompilerTypeForLanguage(String)

指定した言語に基づいてビルド プロバイダーのコンパイラ設定を返します。

System_CAPS_pubmethodGetGeneratedType(CompilerResults)

仮想パスからビルド プロバイダーによって生成される型を返します。

System_CAPS_pubmethodGetHashCode()

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

System_CAPS_pubmethodGetResultFlags(CompilerResults)

仮想パスが構築されたときに必要なアクションを示す値を返します。

System_CAPS_pubmethodGetType()

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

System_CAPS_protmethodMemberwiseClone()

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

System_CAPS_protmethodOpenReader()

現在のビルド プロバイダー オブジェクトの仮想パスから読み込むのためのテキスト リーダーを開きます。

System_CAPS_protmethodOpenReader(String)

指定した仮想パスから読み込むのためのテキスト リーダーを開きます。

System_CAPS_protmethodOpenStream()

現在のビルド プロバイダー オブジェクトの仮想パスを読み取るためのストリームを開きます。

System_CAPS_protmethodOpenStream(String)

指定した仮想パスから読み取るのためのストリームを開きます。

System_CAPS_pubmethodProcessCompileErrors(CompilerResults)

派生クラスでオーバーライドされた場合の詳細情報に合わせて変更するように、コンパイラのエラー メッセージを確認できます。

System_CAPS_pubmethodSystem_CAPS_staticRegisterBuildProvider(String, Type)

ビルド プロバイダーを登録します。

System_CAPS_pubmethodToString()

現在のオブジェクトを表す文字列を返します。(Object から継承されます。)

ASP.NET ビルド環境の使用 BuildProvider アプリケーション内で別のファイルの種類のソース コードを生成するオブジェクト。 派生したクラス BuildProvider 主のソース コード ファイル、Web ページ、リソース、およびその他のユーザー設定項目を指定します。

インスタンスで一般に、作成していない、 BuildProvider クラスを直接します。 派生したクラスを実装する代わりに、 BuildProvider, 、構成して、 BuildProvider 、ASP.NET 内で使用するための実装が環境を構築します。

インスタンス、 BuildProvider クラスの併用 AssemblyBuilder オブジェクトを 1 つまたは複数のファイルをコンパイルされたアセンブリに組み込みます。 A BuildProvider インスタンスは、個々 のファイルに対する適切な言語でソース コードを生成し、 AssemblyBuilder オブジェクトは、それぞれによって提供されるソースを組み合わせて BuildProvider インスタンスを 1 つのアセンブリにします。

ASP.NET ビルド環境のインスタンスを使用して、 BuildProvider アプリケーション内でファイルをビルドするクラス。 VirtualPath のプロパティ、 BuildProvider クラスを作成するファイルのパスを示します。 アプリケーション内の各ファイルのファイル拡張子は、対応するビルド プロバイダーにマップされます。 ASP.NET ビルド環境によって初期化、 BuildProvider インスタンスの各ファイルのファイル拡張子に基づいたを使用して、 BuildProvider ファイルのソース コードを生成するメソッドです。 ASP.NET ビルド環境、 AssemblyBuilder オブジェクトでは、コンパイラが優先される言語とファイルのコンテキストに基づいて、 BuildProvider メソッドの 1 つまたは複数のファイルからアセンブリを作成するときにできるように、 BuildProvider インスタンスは、ソース コード ファイル全体のアセンブリにそのファイルを投稿できます。

ASP.NET アプリケーション内のファイルの種類のカスタム ビルド アクションを定義するには派生クラスを BuildProvider, 、ファイルの種類を作成するため、派生クラス内のメンバーを実装して、アプリケーション構成ファイル内の対応するファイル拡張子のビルド プロバイダーを構成します。

サポートされているファイルのファイル拡張子を指定し、ビルド プロバイダーがコード ファイル、Web のファイル、リソース ファイル、またはすべてのファイルをサポートするかどうか。 使用して、 type ビルド プロバイダーの実装の完全修飾型名を指定する属性です。 使用して、 BuildProviderAppliesToAttribute クラスを App_Code ディレクトリ内のファイル、Web コンテンツ ディレクトリの場合は、そのグローバルまたはローカル リソース内のファイルまたはすべてのファイルにビルド プロバイダーが適用されるかどうかを指定します。 使用して、 extension ファイルを識別するために使用されるファイル拡張子を指定する属性、 BuildProvider クラスでサポートされます。 使用して、 BuildProviderCollection を調べるクラスは、構成ファイルでプロバイダを構築します。 ビルド プロバイダーの構成の詳細については、次を参照してください。 (ASP.NET 設定スキーマ) compilation の buildProviders 要素します。

カスタム ファイルの種類のソース コードを生成するビルド プロバイダーを実装するのには、派生クラスを BuildProvider, をオーバーライドし、 GenerateCode 、サポートされているファイルの種類のソース コードを生成します。 生成されたソースに追加、 AssemblyBuilder CodeDOM グラフのまたは物理的なソース コード ファイルを表すコンテンツとしては、フォーム内のオブジェクト。 ビルド プロバイダーでは、特定のプログラミング言語が必要とする場合は、オーバーライド、 CodeCompilerType 返されるプロパティを CompilerType サポートされているプログラミング言語のオブジェクト。 ビルド プロバイダーに固有のプログラミング言語が必要としない場合はオーバーライドしないで、 CodeCompilerType プロパティ; ビルド プロバイダーが Visual Basic や c# など、任意の .NET Framework 言語を使用して、基本クラスの実装を使用します。

Web コンテンツのソース コードを生成するビルド プロバイダーを実装するのには、派生クラスを BuildProvider させ、 GetGeneratedType を返すメソッドを Type によって生成されたクラスの BuildProviderです。 オーバーライド、 GenerateCode サポートされているファイルに含まれる型のソース コードを生成します。

System_CAPS_noteメモ

追加、カスタマイズされた BuildProvider Web.config ファイルにクラスは、ASP.NET Web サイトで機能しますが、ASP.NET Web アプリケーション プロジェクトでは機能しません。 Web アプリケーション プロジェクトによって生成されるコードで、 BuildProvider クラスは、アプリケーションに含めることはできません。 詳細については、次を参照してください。 ASP.NET Web アプリケーション プロジェクト プリコンパイル概要します。

次のコード例は、抽象から継承する簡単なビルド プロバイダーの実装を示しています。 BuildProvider 基本クラスです。 ビルド プロバイダーは、 CodeCompilerType, 、GetGeneratedType, 、および GenerateCode 基底クラスのメンバーです。 この例の実装を含まない、 SampleClassGenerator クラスです。 詳細については、次を参照してください。、 CodeCompileUnit クラスの概要です。

using System;
using System.Collections;
using System.IO;
using System.Text;
using System.Web;
using System.Web.Compilation;
using System.CodeDom.Compiler;
using System.CodeDom;
using System.Security;
using System.Security.Permissions;

// Define a simple build provider implementation.
[PermissionSet(SecurityAction.Demand, Unrestricted = true)]
public class SampleBuildProvider : BuildProvider
{
    // Define an internal member for the compiler type.
    protected CompilerType _compilerType = null;

    public SampleBuildProvider()
    {
        _compilerType = GetDefaultCompilerTypeForLanguage("C#");
    }

    // Return the internal CompilerType member 
    // defined in this implementation.
    public override CompilerType CodeCompilerType
    {
        get { return _compilerType; }
    }


    // Define the build provider implementation of the GenerateCode method.
    public override void GenerateCode(AssemblyBuilder assemBuilder)
    {
        // Generate a code compile unit, and add it to
        // the assembly builder.

        TextWriter tw = assemBuilder.CreateCodeFile(this);
        if (tw != null)
        {
            try
            {
                // Generate the code compile unit from the virtual path.
                CodeCompileUnit compileUnit = SampleClassGenerator.BuildCompileUnitFromPath(VirtualPath);

                // Generate the source for the code compile unit, 
                // and write it to a file specified by the assembly builder.
                CodeDomProvider provider = assemBuilder.CodeDomProvider;
                provider.GenerateCodeFromCompileUnit(compileUnit, tw, null);
            }
            finally
            {
                tw.Close();
            }
        }
    }

    public override System.Type GetGeneratedType(CompilerResults results)
    {
        string typeName = SampleClassGenerator.TypeName;

        return results.CompiledAssembly.GetType(typeName);
    }
}

.NET Framework
2.0 以降で使用可能

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

トップに戻る
表示: