AssemblyBuilder Classe

Definizione

Rende disponibile un contenitore per compilare un assembly da uno o più percorsi virtuali in un progetto ASP.NET.

C#
public class AssemblyBuilder
Ereditarietà
AssemblyBuilder

Esempio

Nell'esempio di codice seguente viene illustrata una semplice implementazione del provider di compilazione, che eredita dalla classe base astratta BuildProvider . Il provider di compilazione esegue l'override dei CodeCompilerTypemembri , GetGeneratedTypee GenerateCode della classe base.

Nell'implementazione del GenerateCode metodo il provider di compilazione aggiunge il codice generato per la compilazione dell'assembly usando il CreateCodeFile metodo . L'esempio non include l'implementazione della SampleClassGenerator classe . Per altre informazioni, vedere CodeCompileUnit.

C#
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()
    {
        // Set the compiler to use Visual Basic.
        _compilerType = GetDefaultCompilerTypeForLanguage("C#");
    }

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

    // Define a method that returns details for the 
    // code compiler for this build provider.
    public string GetCompilerTypeDetails()
    {
        StringBuilder details = new StringBuilder("");

        if (_compilerType != null)
        {
            // Format a string that contains the code compiler
            // implementation, and various compiler details.

            details.AppendFormat("CodeDomProvider type: {0}; \n",
                _compilerType.CodeDomProviderType.ToString());
            details.AppendFormat("Compiler debug build = {0}; \n",
                _compilerType.CompilerParameters.IncludeDebugInformation.ToString());
            details.AppendFormat("Compiler warning level = {0}; \n",
                _compilerType.CompilerParameters.WarningLevel.ToString());

            if (_compilerType.CompilerParameters.CompilerOptions != null)
            {
                details.AppendFormat("Compiler options: {0}; \n",
                    _compilerType.CompilerParameters.CompilerOptions.ToString());
            }
        }
        return details.ToString();
    }

    // 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.CreateGenerator().GenerateCodeFromCompileUnit(compileUnit, tw, null);
            }
            finally
            {
                tw.Close();
            }
        }
    }

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

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

Commenti

Le istanze della classe vengono usate con BuildProvider i metodi di AssemblyBuilder classe per compilare uno o più file in un assembly compilato.

La BuildProvider classe definisce la funzionalità di compilazione per singoli file e la AssemblyBuilder classe combina il codice sorgente fornito da ogni BuildProvider istanza in un singolo assembly. L'ambiente di compilazione ASP.NET passa un AssemblyBuilder oggetto ai metodi durante la BuildProvider compilazione di un assembly da uno o più file, in modo che ogni BuildProvider istanza possa contribuire al codice sorgente per il relativo file nell'assembly complessivo.

L'ambiente di compilazione ASP.NET determina il linguaggio e il compilatore richiesti dai file all'interno del progetto, in base alla BuildProvider.CodeCompilerType proprietà . L'ambiente di compilazione raggruppa i file in base alle impostazioni del compilatore e compila un assembly da file che richiedono lo stesso compilatore.

La CodeDomProvider proprietà indica l'implementazione usata dall'ambiente CodeDomProvider di compilazione ASP.NET per compilare un assembly dal codice sorgente fornito da ogni BuildProvider implementazione.

Un BuildProvider oggetto contribuisce al codice sorgente sotto forma di grafico CodeDOM usando il AddCodeCompileUnit metodo . Un BuildProvider oggetto contribuisce al codice sorgente archiviato in un file fisico usando il CreateCodeFile metodo .

Dopo che ogni BuildProvider oggetto contribuisce al codice sorgente usando i metodi appropriatiAssemblyBuilder, l'ambiente di compilazione ASP.NET usa la AssemblyBuilder classe per compilare il codice sorgente raccolto in un assembly.

Proprietà

CodeDomProvider

Ottiene il compilatore utilizzato per compilare codice sorgente in un assembly.

Metodi

AddAssemblyReference(Assembly)

Aggiunge un assembly a cui fa riferimento il codice sorgente generato per un file.

AddCodeCompileUnit(BuildProvider, CodeCompileUnit)

Aggiunge codice sorgente per l'assembly sotto forma di grafico CodeDOM.

CreateCodeFile(BuildProvider)

Consente a un provider di compilazione di creare un file di origine temporaneo e di includere il file di origine nella compilazione dell'assembly.

CreateEmbeddedResource(BuildProvider, String)

Consente a un provider di compilazione di creare un file di risorse da includere nella compilazione dell'assembly.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GenerateTypeFactory(String)

Inserisce un modello di factory di oggetto veloce per un tipo nell'assembly compilato.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetTempFilePhysicalPath(String)

Genera un percorso di file temporaneo.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a

Prodotto Versioni
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8

Vedi anche