Cette documentation est archivée et n’est pas conservée.

BuildProvider, classe

Mise à jour : novembre 2007

Définit un jeu de propriétés et de méthodes pour générer le code source dans l'environnement de génération ASP.NET. Cette classe est abstraite.

Espace de noms :  System.Web.Compilation
Assembly :  System.Web (dans System.Web.dll)

[AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.High)]
[AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.High)]
public abstract class BuildProvider
/** @attribute AspNetHostingPermissionAttribute(SecurityAction.LinkDemand, Level = AspNetHostingPermissionLevel.High) */
/** @attribute AspNetHostingPermissionAttribute(SecurityAction.InheritanceDemand, Level = AspNetHostingPermissionLevel.High) */
public abstract class BuildProvider
public abstract class BuildProvider

L'environnement de génération ASP.NET utilise des objets BuildProvider pour générer le code source pour différents types de fichiers au sein d'une application. Les classes dérivées principalement de BuildProvider fournissent le code source pour les fichiers, pages Web, ressources et autres éléments personnalisés.

En général, vous ne créez pas une instance de la classe BuildProvider directement. Vous implémentez plutôt une classe qui dérive de BuildProvider et vous configurez l'implémentation de BuildProvider pour l'utiliser dans l'environnement de génération ASP.NET.

Les instances de la classe BuildProvider sont utilisées avec des objets AssemblyBuilder pour créer un ou plusieurs fichiers dans un assembly compilé. Une instance de BuildProvider génère le code source dans le langage approprié pour les fichiers individuels et l'objet AssemblyBuilder regroupe les sources apportées par chaque instance de BuildProvider dans un seul assembly.

L'environnement de génération ASP.NET utilise des instances de la classe BuildProvider pour créer des fichiers dans une application. La propriété VirtualPath de la classe BuildProvider indique le chemin d'accès du fichier à créer. L'extension de chacun des fichiers au sein d'une application est mappée à un fournisseur de générations correspondant. L'environnement de génération ASP.NET initialise une instance de BuildProvider pour chaque fichier selon son extension et utilise les méthodes BuildProvider pour générer le code source pour le fichier. L'environnement de génération ASP.NET passe un objet AssemblyBuilder selon le langage de compilateur par défaut et le contexte du fichier aux méthodes BuildProvider lors de la génération d'un assembly à partir d'un ou de plusieurs fichiers, afin que l'instance de BuildProvider puisse apporter le code source de son fichier à l'assembly global.

Pour définir des actions de génération personnalisées pour un type de fichier dans une application ASP.NET, vous devez dériver une classe de BuildProvider, implémenter des membres dans la classe dérivée pour la création du type de fichier et configurer le fournisseur de générations pour l'extension de fichier correspondante dans le fichier de configuration de l'application.

Ladd element spécifie l'extension des fichiers pris en charge et indique si le fournisseur de générations prend en charge des fichiers de code, des fichiers Web, des fichiers de ressources ou tous les fichiers. Utilisez l'attribut type pour spécifier le nom de type qualifié complet de l'implémentation du fournisseur de générations. Utilisez l'attribut appliesTo pour spécifier si le fournisseur de générations s'applique aux fichiers du répertoire App_Code, aux fichiers d'un répertoire de contenu Web, aux ressources globales ou locales, ou à tous les fichiers. Utilisez l'attribut extension pour spécifier l'extension de fichier utilisée pour identifier les fichiers que la classe BuildProvider prend en charge. Utilisez la classe BuildProviderCollection pour examiner les fournisseurs de générations dans un fichier de configuration. Pour plus d'informations sur la configuration d'un fournisseur de générations, consultez buildProviders, élément de compilation (Schéma des paramètres ASP.NET).

Pour implémenter un fournisseur de générations qui génère le code source pour un type de fichier personnalisé, dérivez une classe de BuildProvider pour la substituer à la méthode GenerateCode pour générer le code source pour le type de fichier pris en charge. La source générée est ajoutée à l'objet AssemblyBuilder dans le formulaire d'un graphique CodeDOM ou comme contenu qui représente un fichier de code source physique. Si le fournisseur de générations requiert un langage de programmation spécifique, substituez la propriété CodeCompilerType pour retourner un objet CompilerType pour le langage de programmation pris en charge. Si le fournisseur de générations ne requiert pas de langage de programmation spécifique, ne substituez pas la propriété CodeCompilerType ; utilisez l'implémentation de classe de base qui indique que le fournisseur de générations peut utiliser tout langage .NET Framework, tel que Visual Basic ou C#.

Pour implémenter un fournisseur de générations qui génère du code source pour le contenu Web, dérivez une classe de BuildProvider et substituez la méthode GetGeneratedType pour retourner le Type pour la classe générée par BuildProvider. Substituez la méthode GenerateCode pour générer le code source pour le type fourni par le fichier pris en charge.

Remarque :

L'ajout d'une classe BuildProvider personnalisée au fichier Web.config fonctionne dans un site Web ASP.NET mais pas dans un projet d'application Web ASP.NET. Dans un projet d'application Web, le code généré par la classe BuildProvider ne peut pas être inclus dans l'application. Pour plus d'informations, consultez Compilation des projets d'application Web.

TopicLocation
Comment : sécuriser une application ASP.NET sur un serveur partagéGénération d'applications Web ASP.NET dans Visual Studio
Comment : sécuriser une application ASP.NET sur un serveur partagéGénération d'applications Web ASP.NET dans Visual Studio
Comment : sécuriser une application ASP.NET sur un serveur partagéGénération d'applications Web ASP.NET

L'exemple de code suivant illustre une implémentation simple de fournisseur de générations, par héritage de la classe abstraite de base BuildProvider. Le fournisseur de générations substitue les membres CodeCompilerType, GetGeneratedType et GenerateCode de la classe de base. L'exemple n'inclut pas l'implémentation de la classe SampleClassGenerator. Pour plus d'informations, consultez la vue d'ensemble de la classe 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);
    }
}


Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professionnel Édition x64, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

.NET Framework

Pris en charge dans : 3.5, 3.0, 2.0
Afficher: