Compilazione e creazione di pacchetti di progetti di applicazione Web
di Jason Lee
Quando si vuole distribuire un progetto applicazione Web in un ambiente server remoto, la prima attività consiste nel compilare il progetto e generare un pacchetto di distribuzione Web. Questo argomento descrive come funziona il processo di compilazione per i progetti dell'applicazione Web. In particolare, spiega:
- In che modo la pipeline di pubblicazione Web (WPP) estende il processo di compilazione per includere funzionalità di distribuzione.
- Come internet Information Services (IIS) Web Deployment Tool (Distribuzione Web) trasforma l'applicazione Web in un pacchetto di distribuzione.
- Funzionamento del processo di compilazione e creazione di pacchetti e dei file creati.
In Visual Studio 2010 il processo di compilazione e distribuzione per i progetti applicazione Web è supportato dal WPP. Il WPP fornisce un set di destinazioni Microsoft Build Engine (MSBuild) che estendono la funzionalità di MSBuild e consentono l'integrazione con La distribuzione Web. In Visual Studio è possibile visualizzare questa funzionalità estesa nelle pagine delle proprietà per il progetto dell'applicazione Web. La pagina Web Pacchetto/pubblicazione , insieme alla pagina Package/Publish SQL , consente di configurare il modo in cui il progetto dell'applicazione Web viene pacchetto per la distribuzione al termine del processo di compilazione.
Come funziona il WPP?
Se si esamina il file di progetto per un progetto applicazione Web basato su C#, è possibile notare che importa due file con estensione destinazioni.
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\
v10.0\WebApplications\Microsoft.WebApplication.targets" />
La prima istruzione Import è comune a tutti i progetti Visual C#. Questo file, Microsoft.CSharp.targets, contiene destinazioni e attività specifiche di Visual C#. Ad esempio, l'attività del compilatore C# (Csc) viene richiamata qui. Il file Microsoft.CSharp.targets importa a sua volta il file Microsoft.Common.targets . In questo modo vengono definite le destinazioni comuni a tutti i progetti, ad esempio Build, Rebuild, Run, Compile e Clean. La seconda istruzione Import è specifica per i progetti dell'applicazione Web. Il file Microsoft.WebApplication.targets importa a sua volta il file Microsoft.Web.Publishing.targets . Il file Microsoft.Web.Publishing.targetsè essenzialmente il WPP. Definisce le destinazioni, ad esempio Package e MSDeployPublish, che richiamano La distribuzione Web per completare varie attività di distribuzione.
Per comprendere come vengono usate queste destinazioni aggiuntive, nella soluzione di esempio Contact Manager aprire il file Publish.proj e esaminare la destinazione BuildProjects .
<Target Name="BuildProjects" Condition=" '$(BuildingInTeamBuild)'!='true' ">
<MSBuild Projects="@(ProjectsToBuild)"
Properties="OutDir=$(OutputRoot);
Configuration=$(Configuration);
DeployOnBuild=true;
DeployTarget=Package"
Targets="Build" />
</Target>
Questa destinazione usa l'attività MSBuild per compilare vari progetti. Si notino le proprietà DeployOnBuild e DeployTarget :
- La proprietà DeployOnBuild=true significa essenzialmente "Voglio eseguire una destinazione aggiuntiva quando la compilazione viene completata correttamente".
- La proprietà DeployTarget identifica il nome della destinazione da eseguire quando la proprietà DeployOnBuild è uguale a true. In questo caso, si specifica che si vuole che MSBuild esegui la destinazione pacchetto dopo aver compilato il progetto.
La destinazione pacchetto è definita nel file Microsoft.Web.Publishing.targets . In sostanza, questa destinazione accetta l'output di compilazione del progetto applicazione Web e lo trasforma in un pacchetto di distribuzione Web che può essere pubblicato in un server Web IIS.
Nota
Per visualizzare un file di progetto , ad esempio ContactManager.Mvc.csproj, in Visual Studio 2010, è prima necessario scaricare il progetto dalla soluzione. Nella finestra Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo del progetto e quindi scegliere Scarica progetto. Fare di nuovo clic con il pulsante destro del mouse sul nodo del progetto e quindi scegliere Modifica[file di progetto]). Il file di progetto verrà aperto nel formato XML non elaborato. Ricordarsi di ricaricare il progetto al termine.
Per altre informazioni sulle destinazioni, le attività e le istruzioni Import di MSBuild, vedere Informazioni sul file di progetto. Per un'introduzione più approfondita ai file di progetto e al WPP, vedere All'interno della Microsoft Build Engine: Using MSBuild and Team Foundation Build by Sayed Csv Hashimi and William Bartholomew, ISBN: 978-0-7356-4524-0.
Che cos'è un pacchetto di distribuzione Web?
Quando si compila e distribuisce un progetto di applicazione Web, usando Visual Studio 2010 o usando MSBuild direttamente, il risultato finale è in genere un pacchetto di distribuzione Web. Il pacchetto di distribuzione Web è un file .zip. Contiene tutti gli elementi necessari per iis e distribuzione Web per ricreare l'applicazione Web, tra cui:
- L'output compilato dell'applicazione Web, tra cui contenuto, file di risorse, file di configurazione, javaScript e fogli di stile css (cascading) e così via.
- Assembly per il progetto dell'applicazione Web e per tutti i progetti a cui si fa riferimento all'interno della soluzione.
- Script SQL per generare tutti i database distribuiti con l'applicazione Web.
Dopo aver generato il pacchetto di distribuzione Web, è possibile pubblicarlo in un server Web IIS in vari modi. Ad esempio, è possibile distribuirlo in remoto tramite il servizio Distribuzione remota Web o il gestore distribuzione Web nel server Web di destinazione oppure è possibile usare Gestione IIS per importare manualmente il pacchetto nel server Web di destinazione. Per altre informazioni su questi approcci alla distribuzione, vedere Scelta dell'approccio corretto alla distribuzione Web.
Come funziona il processo di compilazione?
In questo modo viene illustrato cosa accade quando si compila e si crea un pacchetto di un progetto di applicazione Web:
Quando si compila un progetto applicazione Web, il processo di compilazione genera un file denominato [nome progetto].SourceManifest.xml. Insieme al file di progetto e all'output della compilazione, questo file con estensione SourceManifest.xml indica a Web Deploy cosa deve includere nel pacchetto di distribuzione Web. Usando questi input, Distribuzione Web genera un pacchetto di distribuzione Web denominato [nome progetto].zip.
Insieme al pacchetto di distribuzione Web, il processo di compilazione genera due file che consentono di usare il pacchetto:
- Il file deploy.cmd include un set di comandi Web Deploy (MSDeploy.exe) con parametri che pubblicano il pacchetto di distribuzione Web in un server Web IIS remoto. L'esecuzione del file deploy.cmd , con parametri appropriati, offre in genere un'alternativa più rapida e più semplice per costruire manualmente i comandi di MSDeploy.exe.
- Il file SetParameters.xml fornisce un set di valori di parametro al comando MSDeploy.exe. Questi valori includono proprietà come il nome dell'applicazione Web IIS a cui si vuole distribuire il pacchetto, i valori di eventuali endpoint di servizio e le stringhe di connessione definite nel file web.config e i valori delle proprietà di distribuzione definiti nelle pagine delle proprietà del progetto.
Il file SetParameters.xml è fondamentale per gestire il processo di distribuzione. Questo file viene generato dinamicamente in base al contenuto del progetto dell'applicazione Web. Ad esempio, se si aggiunge una stringa di connessione al file web.config , il processo di compilazione rileverà automaticamente la stringa di connessione, parametrizza la distribuzione di conseguenza e crea una voce nel file SetParameters.xml per consentire di modificare la stringa di connessione come parte del processo di distribuzione. L'argomento successivo, Configurazione dei parametri per la distribuzione di pacchetti Web, illustra il ruolo di questo file in modo più dettagliato e descrive i diversi modi in cui è possibile modificarlo durante la compilazione e la distribuzione.
Nota
In Visual Studio 2010 il WPP non supporta la precompilazione delle pagine in un'applicazione Web prima della creazione di pacchetti. La versione successiva di Visual Studio e WPP includerà la possibilità di precompilare un'applicazione Web come opzione di creazione di pacchetti.
Conclusione
Questo argomento ha fornito una panoramica del processo di compilazione e creazione di pacchetti per i progetti applicazione Web in Visual Studio 2010. È stato descritto come il WPP consente di richiamare i comandi Distribuimenti Web da MSBuild e di come funziona il processo di compilazione e creazione di pacchetti.
Dopo aver creato un pacchetto di distribuzione Web, il passaggio successivo consiste nel distribuirlo. Per altre informazioni, vedere Configurazione dei parametri per la distribuzione di pacchetti Web e distribuzione di pacchetti Web.
Altre informazioni
Gli argomenti successivi di questa esercitazione, Configurazione dei parametri per la distribuzione di pacchetti Web e la distribuzione di pacchetti Web, forniscono indicazioni su come usare il pacchetto Web creato. L'esercitazione finale in questa serie, Advanced Enterprise Web Deployment, fornisce indicazioni su come personalizzare e risolvere i problemi del processo di creazione dei pacchetti.
Per un'introduzione più approfondita ai file di progetto e al WPP, vedere All'interno della Microsoft Build Engine: Using MSBuild and Team Foundation Build by Sayed Csv Hashimi and William Bartholomew, ISBN: 978-0-7356-4524-0.