Condividi tramite


Creazione ed esecuzione di un file di comando per la distribuzione

di Jason Lee

In questo argomento viene descritto come creare un file di comando che consente di eseguire una distribuzione usando i file di progetto Microsoft Build Engine (MSBuild) come processo ripetibile in un singolo 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 MVC 3 ASP.NET, un servizio WINDOWS Communication Foundation (WCF) e un progetto di database.

Il metodo di distribuzione al centro di queste esercitazioni si basa sull'approccio di suddivisione del file di progetto 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 una contenente 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 agnostico dell'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 dell'ambiente agnostic.
  • Indica al file Publish.proj il file contenente 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 dell'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, è un semplice passaggio per passare a una distribuzione ripetibile e in un singolo passaggio. Tutto ciò che è necessario fare consiste nell'aggiungere il comando MSBuild a un file con estensione 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

Nota

L'opzione /fl indica a MSBuild di creare un file di log denominato msbuild.log nella directory di lavoro in cui è stato richiamato MSBuild.exe.

Per distribuire o ridistribuire la soluzione Contact Manager, è necessario eseguire il file Publish-Dev.cmd . Quando si esegue il file, MSBuild:

  • Compilare tutti i progetti nella soluzione.
  • Generare pacchetti Web distribuiscibili per i progetti dell'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

Quando è stato creato un file di comando per l'ambiente di destinazione, è necessario essere in grado di completare l'intera distribuzione eseguendo semplicemente il file.

Per distribuire la soluzione Contact Manager nell'ambiente di test

  1. Nella workstation per sviluppatori aprire Esplora risorse e quindi passare al percorso del file Publish-Dev.cmd .

  2. Fare doppio clic sul file per eseguirlo.

  3. Se viene visualizzata una finestra di dialogo Apri file - Avviso di sicurezza , fare clic su Esegui.

  4. Se le impostazioni di configurazione e i server di test vengono configurati correttamente, la finestra del prompt dei comandi mostrerà un messaggio di compilazione riuscito al termine dell'elaborazione dei file di progetto.

    Se le impostazioni di configurazione e i server di test vengono configurati correttamente, la finestra del prompt dei comandi mostrerà un messaggio di compilazione riuscito al termine dell'elaborazione dei file di progetto.

  5. Se si tratta della prima volta che è stata distribuita la soluzione in questo ambiente, è necessario aggiungere l'account del computer 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 distribuzione Web.

    Nota

    È 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 la prima volta che si distribuisce la soluzione.

  6. Aprire Internet Explorer e passare all'URL dell'applicazione Contact Manager, ad esempio http://testweb1:85/ContactManager/.

  7. Verificare che l'applicazione funzioni come previsto e che sia possibile aggiungere contatti.

    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 creare 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 creerà 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

Nota

Per indicazioni su come personalizzare i file di progetto specifici dell'ambiente per gli ambienti server personalizzati, 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.