Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
di Jason Lee
Quando si vuole distribuire un progetto di applicazione Web in un ambiente server remoto, la prima attività consiste nel compilare il progetto e generare un pacchetto di distribuzione Web. In questo argomento viene descritto il funzionamento del processo di compilazione per i progetti di applicazioni Web. In particolare, spiega:
- In che modo la pipeline di pubblicazione Web estende il processo di compilazione per includere la funzionalità di distribuzione.
- In che modo lo strumento di distribuzione Web IIS (Internet Information Services) (Distribuzione Web) trasforma l'applicazione Web in un pacchetto di distribuzione.
- Il funzionamento del processo di compilazione e confezionamento e quali file vengono creati.
In Visual Studio 2010 il processo di compilazione e distribuzione per i progetti di applicazioni Web è supportato dal WPP. WPP fornisce un set di destinazioni di Microsoft Build Engine (MSBuild) che estendono la funzionalità di MSBuild e consentono l'integrazione con Distribuzione Web. In Visual Studio è possibile visualizzare questa funzionalità estesa nelle pagine delle proprietà per il progetto di applicazione Web. La pagina Web Pacchetto/Pubblicazione , insieme alla pagina Pacchetto/Pubblicazione SQL , consente di configurare il modo in cui il progetto dell'applicazione Web viene creato in un pacchetto per la distribuzione al termine del processo di compilazione.
Come funziona il WPP?
Se si esamina il file di progetto per un progetto di applicazione Web basato su C#, è possibile notare che importa due file con estensione targets.
<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 . Vengono definite le destinazioni comuni a tutti i progetti, ad esempio Compilazione, Ricompilazione, Esecuzione, Compilazione e Pulizia. La seconda istruzione Import è specifica per i progetti di applicazioni 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 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 ed 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 al termine della compilazione".
- 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 del pacchetto dopo la compilazione del progetto.
La destinazione del pacchetto è definita nel file Microsoft.Web.Publishing.targets . In sostanza, questa destinazione accetta l'output di compilazione del progetto dell'applicazione Web e la trasforma in un pacchetto di distribuzione Web che può essere pubblicato in un server Web IIS.
Annotazioni
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. Ricorda di ricaricare il progetto quando hai finito.
Per altre informazioni su destinazioni, attività e istruzioni Import di MSBuild, vedere Informazioni sul file di progetto. Per un'introduzione più approfondita ai file di progetto e al WPP, consultare Inside the Microsoft Build Engine: Using MSBuild and Team Foundation Build di Sayed Ibrahim Hashimi e 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 direttamente MSBuild, il risultato finale è in genere un pacchetto di distribuzione Web. Il pacchetto di distribuzione Web è un file di .zip. Contiene tutti gli elementi necessari per IIS e Distribuzione Web per ricreare l'applicazione Web, tra cui:
- L'output compilato della tua applicazione web, inclusi i contenuti, i file di risorse, i file di configurazione, le risorse JavaScript e i fogli di stile a cascata (CSS) e così via.
- Assembly per il progetto dell'applicazione Web e per i progetti a cui si fa riferimento nella soluzione.
- Script SQL per generare tutti i database da distribuire 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 specificando come destinazione il servizio Agente remoto distribuzione 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?
Ciò mostra cosa accade quando si compila e si crea un pacchetto di un progetto di applicazione Web:
Quando si compila un progetto di 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.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 di distribuzione Web con parametri (MSDeploy.exe) 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 alla creazione manuale dei comandi MSDeploy.exe manualmente.
- 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 in cui si vuole distribuire il pacchetto, i valori di qualsiasi endpoint di servizio e stringhe di connessione definiti nel file web.config e i valori delle proprietà di distribuzione definiti nelle pagine delle proprietà del progetto.
Il fileSetParameters.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, parametrizzerà la distribuzione di conseguenza e creerà 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 modificarli durante la compilazione e la distribuzione.
Annotazioni
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
In questo argomento è stata fornita una panoramica del processo di compilazione e creazione di pacchetti per i progetti di applicazioni Web in Visual Studio 2010. Descrive in che modo WPP consente di richiamare i comandi di Distribuzione Web da MSBuild e spiega 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 dipacchetti Web e distribuzione di pacchetti Web, forniscono indicazioni su come usare il pacchetto Web creato. L'esercitazione finale di 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, consultare Inside the Microsoft Build Engine: Using MSBuild and Team Foundation Build di Sayed Ibrahim Hashimi e William Bartholomew, ISBN: 978-0-7356-4524-0.