Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

BuildProvider.GenerateCode, méthode

Génère le code source pour le chemin d'accès virtuel du fournisseur de générations et l'ajoute à un générateur de builds spécifié.

Espace de noms :  System.Web.Compilation
Assembly :  System.Web (dans System.Web.dll)
public virtual void GenerateCode(
	AssemblyBuilder assemblyBuilder
)

Paramètres

assemblyBuilder
Type : System.Web.Compilation.AssemblyBuilder
Générateur d'assemblys qui référence le code source généré par le fournisseur de générations.

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 la classe BuildProvider pour la substituer à la méthode GenerateCode pour générer le code source pour le type de fichier pris en charge.

En général, l'implémentation GenerateCode d'un fournisseur de générations lit la propriété VirtualPath, analyse son contenu et ajoute le code source généré à l'objet AssemblyBuilder spécifié. Vous pouvez ajouter le code source à l'assembly sous la forme d'un objet TextWriter ou d'un graphique CodeDOM. Pour ajouter le code source à l'assembly par le biais d'un objet TextWriter, utilisez la méthode CreateCodeFile. Pour ajouter le code source d'un graphique CodeDOM à l'assembly, utilisez la méthode AddCodeCompileUnit.

Si le fournisseur de générations génère le code source dans un langage de programmation spécifique, vous devez substituer la propriété CodeCompilerType pour retourner un objet CompilerType pour le langage de programmation pris en charge.

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.


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

Pris en charge dans : 4.5, 4, 3.5, 3.0, 2.0

Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
Cela vous a-t-il été utile ?
(1500 caractères restants)

Ajouts de la communauté

AJOUTER
© 2013 Microsoft. Tous droits réservés.