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
Questo argomento descrive come compilare un file di comando che consente di eseguire una distribuzione usando i file di progetto di Microsoft Build Engine (MSBuild) come processo ripetibile in un unico passaggio.
Questo argomento fa parte di una serie di esercitazioni basate sui requisiti di distribuzione aziendali di una società fittizia denominata Fabrikam, Inc. Questa serie di esercitazioni usa una soluzione di esempio, la soluzione Contact Manager , per rappresentare un'applicazione Web con un livello realistico di complessità, tra cui un'applicazione ASP.NET MVC 3, un servizio Windows Communication Foundation (WCF) e un progetto di database.
Il metodo di distribuzione al centro di queste esercitazioni si basa sull'approccio split project file descritto in Informazioni sul processo di compilazione, in cui il processo di compilazione è controllato da due file di progetto, uno contenente istruzioni di compilazione applicabili a ogni ambiente di destinazione e uno contenente le impostazioni di compilazione e distribuzione specifiche dell'ambiente. In fase di compilazione, il file di progetto specifico dell'ambiente viene unito al file di progetto indipendente dall'ambiente per formare un set completo di istruzioni di compilazione.
Panoramica del processo
In questo argomento si apprenderà come creare ed eseguire un file di comando che usa questi file di progetto per eseguire una distribuzione ripetibile nell'ambiente di destinazione. Essenzialmente, il file di comando deve semplicemente contenere un comando MSBuild che:
- Indica a MSBuild di eseguire il file Publish.proj indipendente dall'ambiente.
- Indica al file Publish.proj il file che contiene le impostazioni del progetto specifiche dell'ambiente e dove trovarlo.
Creare un comando MSBuild
Come descritto in Informazioni sul processo di compilazione, il file di progetto specifico dell'ambiente, ad esempio Env-Dev.proj, è progettato per essere importato nel file Publish.proj indipendente dall'ambiente in fase di compilazione. Insieme, questi due file forniscono un set completo di istruzioni che indicano a MSBuild come compilare e distribuire la soluzione.
Il file Publish.proj usa un elemento Import per importare il file di progetto specifico dell'ambiente.
<Import Project="$(TargetEnvPropsFile)"/>
Di conseguenza, quando si usa MSBuild.exe per compilare e distribuire la soluzione Contact Manager, è necessario:
- Eseguire MSBuild.exe nel file Publish.proj .
- Specificare il percorso del file di progetto specifico dell'ambiente specificando un parametro della riga di comando denominato TargetEnvPropsFile.
A tale scopo, il comando MSBuild dovrebbe essere simile al seguente:
msbuild.exe Publish.proj /p:TargetEnvPropsFile=EnvConfig\Env-Dev.proj
Da qui si tratta di un semplice passaggio per passare a una distribuzione ripetibile in un unico passaggio. È sufficiente aggiungere il comando MSBuild a un file di .cmd. Nella soluzione Contact Manager la cartella Publish include un file denominato Publish-Dev.cmd che esegue esattamente questa operazione.
%windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe Publish.proj /fl /p:TargetEnvPropsFile=EnvConfig\Env-Dev.proj
echo
pause
Annotazioni
L'opzione /fl indica a MSBuild di creare un file di log denominato msbuild.log nella directory di lavoro in cui MSBuild.exe è stato richiamato.
Per distribuire o ridistribuire la soluzione Contact Manager, è sufficiente eseguire il file Publish-Dev.cmd . Quando si esegue il file, MSBuild:
- Compilare tutti i progetti nella soluzione.
- Generare pacchetti Web distribuibili per i progetti di applicazione Web.
- Generare file con estensione dbschema e deploymanifest per i progetti di database.
- Distribuire i pacchetti Web nel server Web.
- Distribuire il database nel server di database.
Eseguire la distribuzione
Dopo aver creato un file di comando per l'ambiente di destinazione, dovrebbe essere possibile completare l'intera distribuzione semplicemente eseguendo il file.
Per distribuire la soluzione Contact Manager nell'ambiente di test
Sulla workstation per sviluppatori, aprire Esplora file e quindi passare al percorso del file Publish-Dev.cmd.
Fare doppio clic sul file per eseguirlo.
Se viene visualizzata una finestra di dialogo Apri file - Avviso di sicurezza , fare clic su Esegui.
Se le impostazioni di configurazione e i server di test sono configurati correttamente, nella finestra del prompt dei comandi verrà visualizzato un messaggio Build succeeded quando MSBuild ha terminato l'elaborazione dei file di progetto.
Se questa è la prima volta che la soluzione è stata distribuita in questo ambiente, è necessario aggiungere l'account computer del server Web di test ai ruoli db_datawriter e db_datareader nel database ContactManager . Questa procedura è descritta in Configurare un server di database per la pubblicazione di distribuzione Web.
Annotazioni
È necessario assegnare queste autorizzazioni solo quando si crea il database. Per impostazione predefinita, il processo di compilazione non ricrea il database in ogni distribuzione, ma confronta il database esistente con lo schema più recente e apporta solo le modifiche necessarie. Di conseguenza, è necessario eseguire il mapping di questi ruoli del database solo la prima volta che si distribuisce la soluzione.
Aprire Internet Explorer e passare all'URL dell'applicazione Contact Manager , ad esempio
http://testweb1:85/ContactManager/.Verificare che l'applicazione funzioni come previsto e che sia possibile aggiungere contatti.
Conclusione
La creazione di un file di comando contenente le istruzioni di MSBuild offre un modo rapido e semplice per compilare e distribuire una soluzione multiprogetto in un ambiente di destinazione specifico. Se è necessario distribuire ripetutamente la soluzione in più ambienti di destinazione, è possibile creare più file di comando. In ogni file di comando, il comando MSBuild compilerà lo stesso file di progetto universale, ma specifica un file di progetto specifico dell'ambiente diverso. Ad esempio, un file di comando da pubblicare in un ambiente di sviluppo o test potrebbe contenere questo comando MSBuild:
msbuild.exe Publish.proj /p:TargetEnvPropsFile=EnvConfig\Env-Dev.proj
Un file di comando da pubblicare in un ambiente di staging potrebbe contenere questo comando MSBuild:
msbuild.exe Publish.proj /p:TargetEnvPropsFile=EnvConfig\Env-Stage.proj
Annotazioni
Per indicazioni su come personalizzare i file di progetto specifici dell'ambiente per i propri ambienti server, vedere Configurare le proprietà di distribuzione per un ambiente di destinazione.
È anche possibile personalizzare il processo di compilazione per ogni ambiente eseguendo l'override delle proprietà o impostando varie altre opzioni nel comando MSBuild. Per altre informazioni, vedere Informazioni di riferimento sulla riga di comando di MSBuild.