Condividi tramite


Compilazione di progetti di applicazione Web

Aggiornamento: novembre 2007

Il tipo di progetto di applicazione Web costituisce un'alternativa al tipo di progetto di sito Web introdotto in Microsoft Visual Studio 2005. Il nuovo modello di progetto di applicazione Web si basa sul modello di progetto Web di Visual Studio .NET 2003. È stato creato per semplificare la conversione dei progetti Web di Visual Studio .NET 2003 alle versioni successive di Visual Studio e per ridurre la necessità di modificare il codice. I file di codice del progetto vengono precompilati in un unico assembly utilizzando Microsoft Build Engine (MSBuild). Le pagine Web ASP.NET (aspx) e i controlli utente (ascx) vengono compilati dinamicamente sul server dal compilatore ASP.NET.

Nota:

I progetti di applicazione Web ASP.NET possono essere creati mediante Visual Studio o Visual Web Developer Express Edition.

Modello di compilazione

Il modello di compilazione per i progetti di applicazione Web assomiglia al modello di compilazione di Visual Studio .NET 2003. Tutti i file di codice (file di classe autonomi, code-behind e della finestra di progettazione) del progetto vengono precompilati in un unico assembly. Per impostazione predefinita questo assembly viene compilato e reso persistente nella cartella Bin. Poiché con questo modello di compilazione viene creato un unico assembly, è possibile specificare attributi, quali il nome e la versione dell'assembly. È inoltre possibile specificare il percorso dell'assembly di output:

A differenza del progetto di sito Web, che viene definito da una cartella, il progetto di applicazione Web viene definito da un file di progetto. Il file di progetto contiene i file inclusi nel progetto, così come i riferimenti all'assembly e altre impostazioni dei metadati del progetto. I file contenuti nella cartella di progetto ma non specificati nel file di progetto non verranno compilati come parte del progetto di applicazione Web. Viene fatto riferimento alle impostazioni di progetto aggiunte e modificate tramite Visual Studio o Visual Web Developer Express Edition nel file di progetto (*proj) generato per ogni progetto.

Per eseguire le pagine e il debug è necessario compilare tutto il progetto di applicazione Web. Tale generazione dovrebbe essere veloce, poiché in Visual Studio e Visual Web Developer Express Edition viene utilizzato un modello di compilazione incrementale in base al quale vengono compilati solo i file che hanno subito modifiche.

Per ulteriori informazioni, vedere Cenni preliminari sui progetti di applicazione Web.

Precompilazione dei file di classe

MSBuild viene utilizzato nei progetti di applicazione Web per precompilare i file di classe. Tali file vengono compilati in un unico assembly e per impostazione predefinita vengono inclusi nella cartella Bin. È possibile estendere e personalizzare il processo di compilazione utilizzando le regole di estendibilità standard di MSBuild. Per ulteriori informazioni, vedere Cenni preliminari su MSBuild.

Nella tabella riportata di seguito vengono descritti i tipi di file di classe di un progetto di applicazione Web compilati in un solo assembly.

Tipo di file di classe

Descrizione

Autonomo

File di classe che è possibile creare e aggiungere alla cartella Bin.

Code-behind

Codice definito dall'utente che si riferisce direttamente ai file di dati.

Finestra di progettazione

Codice generato automaticamente. Il file .designer non deve essere modificato.

Personalizzazione delle opzioni di compilazione

È possibile specificare il nome, la versione e altri dettagli dell'assembly di output utilizzando gli elementi della pagina delle proprietà Applicazione della finestra Progettazione progetti. Utilizzare la pagina Compilazione della finestra Progettazione progetti per specificare la configurazione di compilazione del progetto. È ad esempio possibile specificare la modalità di gestione degli errori e i dettagli relativi all'output dell'assembly. È inoltre possibile aggiungere istruzioni di pre-compilazione e post-compilazione in fase di compilazione, impostando i valori della pagina delle proprietà Eventi di generazione. Per ulteriori informazioni sulle pagine delle proprietà, vedere Progetti, elementi dell'interfaccia utente.

Impostazione della proprietà Operazione di compilazione

Per impostazione predefinita, in MSBuild vengono compilati solo i file di classe dei progetti di applicazione Web quando la proprietà Operazione di compilazione è impostata su Compilazione. Se un progetto di applicazione Web tuttavia include i file di classe nella cartella App_Code, tali file verranno compilati dal compilatore ASP.NET. Ciò vale anche se come operazione di compilazione non è esplicitamente impostato Compilazione.

Nota:

La cartella App_Code esiste per i progetti di sito Web in Visual Studio 2005, ma in genere non è inclusa nei progetti di applicazione Web. Per ulteriori informazioni sulla cartella App_Code, vedere Cartelle di codice condivise nei siti Web ASP.NET.

Compilazione dinamica

Sebbene i file di codice nel progetto vengano precompilati in un solo assembly utilizzando MSBuild, le pagine Web ASP.NET (aspx) e i controlli utente (ascx) di un progetto di applicazione Web vengono compilati dinamicamente sul server dal compilatore ASP.NET. In un progetto di applicazione Web, le pagine Web e i controlli utente possono utilizzare gli attributi CodeBehind e Inherits nelle direttive @ Page e @ Control. L'attributo CodeBehind fa riferimento al file code-behind da utilizzare. L'attributo Inherits fa riferimento a uno spazio dei nomi e a una classe nel file code-behind. 

Nei progetti di applicazione Web, è possibile apportare modifiche limitate alle pagine Web ASP.NET del sito dopo averle compilate e distribuite. Ad esempio, è possibile modificare la disposizione dei controlli, i colori, i tipi di carattere e altri elementi relativi all'aspetto delle pagine. Quando il sito viene eseguito per la prima volta, in ASP.NET viene effettuata un'ulteriore compilazione per creare output dal markup.

È possibile dichiarare un controllo in modo statico nel file code-behind purché lo si renda protetto o pubblico. Poiché eredita dal file code-behind, la pagina con estensione aspx utilizzerà tale dichiarazione senza doverne creare un'altra. Lo spostamento della dichiarazione di un controllo nel file code-behind è utile nelle situazioni seguenti:

  • Quando il tipo del controllo deve essere derivato da un tipo standard.

  • Quando si desidera utilizzare un ambito diverso da quello predefinito. L'ambito fa riferimento al livello di accessibilità, ad esempio public, private, internal, protected e protected internal.

  • Quando si desidera aggiungere attributi di metadati alla dichiarazione del controllo.

  • Quando si desidera scrivere commenti del codice XML per la dichiarazione del controllo.

Per ulteriori informazioni sulle modalità di aggiunta dei controlli, vedere Procedura: aggiungere controlli a una pagina Web ASP.NET a livello di codice.

Distribuzione

Poiché tutti i file di classe vengono compilati in un unico assembly, è necessario distribuire solo l'assembly in questione, insieme ai file aspx e ascx, nonché agli altri file di contenuto statico. In questo modello, i file aspx vengono compilati solo quando vengono richiesti dal browser.

È tuttavia possibile compilare i file aspx e includerli in un unico assembly per la distribuzione. Per eseguire questa operazione si utilizza Web Deployment Projects, costituito da un componente aggiuntivo scaricabile di Visual Studio. Per scaricare il componente aggiuntivo, vedere Visual Studio 2005 Web Deployment Projects sul sito Web ASP.NET Developer Center (informazioni in lingua inglese). Per ulteriori informazioni su come distribuire i progetti di applicazione Web, vedere Procedura: pubblicare progetti di applicazione Web.

Vedere anche

Concetti

Cenni preliminari su MSBuild

Cenni preliminari sui progetti di applicazione Web

Cartelle di codice condivise nei siti Web ASP.NET

Cenni preliminari sulle pagine Web ASP.NET

Riferimenti

Pagina Eventi di compilazione, Progettazione progetti (C#)

Pagina Generazione, Progettazione progetti (C#)

@ Page

Altre risorse

Concetti relativi a MSBuild