BuildProvider クラスとは? わかりやすく解説

BuildProvider クラス

メモ : このクラスは、.NET Framework version 2.0新しく追加されたものです。

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

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

Public MustInherit Class
 BuildProvider
Dim instance As BuildProvider
public abstract class BuildProvider
public ref class BuildProvider abstract
public abstract class BuildProvider
解説解説

BuildProvider オブジェクトは、ASP.NET ビルド環境1 つアプリケーション内に複数ファイル種類ソース コード生成するために使用されます。BuildProvider派生クラスでは、ファイルWeb ページリソース、およびその他のカスタム アイテム用のソース コードを主に提供します

通常BuildProvider クラスインスタンス直接作成することはありません。その代わりBuildProvider から派生したクラス実装し、ASP.NET ビルド環境使用するために BuildProvider 実装設定します

BuildProvider クラスインスタンスを AssemblyBuilder オブジェクトと共に使用して1 つ上のファイルコンパイル済みアセンブリビルドます。BuildProvider インスタンスは、ファイルごとのソース コード適切な言語生成しますAssemblyBuilder オブジェクトは、各 BuildProvider インスタンスによって指定されソース コード単一アセンブリ結合します

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

ASP.NET アプリケーション内にファイル種類ごとにカスタム ビルド アクション定義するには、BuildProvider からクラス派生して、この派生クラス内にファイル種類ビルドするためのメンバ実装してから、アプリケーション構成ファイル内のファイル拡張子対応させるためのビルド プロバイダ設定する必要があります

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

独自のファイル種類ソース コード生成するビルド プロバイダ実装するには、BuildProvider からクラス派生し、GenerateCode メソッドオーバーライドすることで、目的ファイル種類サポートするソース コード生成します生成されソース コードは、CodeDOM グラフ形式で、または物理ソース コード ファイルを表すコンテンツとして、AssemblyBuilder オブジェクト追加されます。ビルド プロバイダで独自のプログラミング言語必要な場合は、CodeCompilerType プロパティオーバーライドして、そのプログラミング言語サポートする CompilerType オブジェクト返すようにします。ビルド プロバイダが独自のプログラミング言語を必要としない場合は、CodeCompilerType プロパティオーバーライドせずに基本クラス実装使用します。これにより、Visual Basic または C# などの .NET Framework 言語使用できるビルド プロバイダ指定されます。

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

使用例使用例

簡単なビルド プロバイダを、抽象基本クラス BuildProvider から継承して実装するコード例次に示しますビルド プロバイダは、基本クラスメンバである CodeCompilerTypeGetGeneratedType、および GenerateCodeオーバーライドます。

Imports Microsoft.VisualBasic
Imports System
Imports System.Collections
Imports System.IO
Imports System.Text
Imports System.Web
Imports System.Web.Compilation
Imports System.CodeDom.Compiler
Imports System.CodeDom
Imports System.Security
Imports System.Security.Permissions

<PermissionSet(SecurityAction.Demand, Unrestricted := true)>
 _
Public Class SampleBuildProvider
    Inherits BuildProvider

    Protected _compilerType As CompilerType
 = Nothing

    Public Sub New()
        _compilerType = GetDefaultCompilerType()
    End Sub

    ' Return the internal CompilerType member 
    ' defined in this implementation.
    Public Overrides ReadOnly
 Property CodeCompilerType() As CompilerType
        Get
            CodeCompilerType = _compilerType
        End Get
    End Property


    ' Define the build provider implementation of the GenerateCode method.
    Public Overrides Sub
 GenerateCode(ByVal assemBuilder As AssemblyBuilder)
        ' Generate a code compile unit, and add it to
        ' the assembly builder.

        Dim tw As TextWriter = assemBuilder.CreateCodeFile(Me)
        If Not tw Is Nothing
 Then
            Try
                ' Generate the code compile unit from the virtual path.
                Dim compileUnit As CodeCompileUnit
 = _
                        SampleClassGenerator.BuildCompileUnitFromPath(VirtualPath)

                ' Generate the source for the code compile unit, 
                ' and write it to a file specified by the assembly builder.
                Dim provider As CodeDomProvider
 = assemBuilder.CodeDomProvider
                provider.GenerateCodeFromCompileUnit(compileUnit, tw, Nothing)
            Finally
                tw.Close()
            End Try

        End If
    End Sub

    Public Overrides Function
 GetGeneratedType(ByVal results As CompilerResults)
 As System.Type
        Dim typeName As String
 = SampleClassGenerator.TypeName

        Return results.CompiledAssembly.GetType(typeName)
    End Function

End Class
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);
    }
}
継承階層継承階層
System.Object
  System.Web.Compilation.BuildProvider
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
BuildProvider メンバ
System.Web.Compilation 名前空間
CompilerType
ClientBuildManager
AssemblyBuilder クラス
System.Web.Configuration.BuildProvider

BuildProvider クラス

メモ : このクラスは、.NET Framework version 2.0新しく追加されたものです。

動的リソースコンパイル時に特定の種類ファイル解析しコード生成する機能提供します。このクラス継承できません。

名前空間: System.Web.Configuration
アセンブリ: System.Web (system.web.dll 内)
構文構文

Public NotInheritable Class
 BuildProvider
    Inherits ConfigurationElement
Dim instance As BuildProvider
public sealed class BuildProvider : ConfigurationElement
public ref class BuildProvider sealed : public
 ConfigurationElement
public final class BuildProvider extends ConfigurationElement
public final class BuildProvider extends
 ConfigurationElement
継承階層継承階層
System.Object
   System.Configuration.ConfigurationElement
    System.Web.Configuration.BuildProvider
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバ場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
BuildProvider メンバ
System.Web.Configuration 名前空間
BuildProviderCollection
BuildProvider クラス



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「BuildProvider クラス」の関連用語

BuildProvider クラスのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



BuildProvider クラスのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS