ASP.NET distribuzione Web con Visual Studio: Distribuzione della riga di comando

di Tom Dykstra

Scaricare il progetto iniziale

Questa serie di esercitazioni illustra come distribuire (pubblicare) un'applicazione Web ASP.NET in Servizio app di Azure App Web o in un provider di hosting di terze parti usando Visual Studio 2012 o Visual Studio 2010. Per informazioni sulla serie, vedere la prima esercitazione nella serie.

Panoramica

Questa esercitazione illustra come richiamare la pipeline di pubblicazione Web di Visual Studio dalla riga di comando. Questo è utile per gli scenari in cui si vuole automatizzare il processo di distribuzione anziché eseguirlo manualmente in Visual Studio, in genere usando un sistema di controllo della versione del codice sorgente.

Apportare una modifica alla distribuzione

La pagina Informazioni visualizza attualmente il codice del modello.

Informazioni sulla pagina con codice modello

Si sostituirà con il codice che visualizza un riepilogo della registrazione degli studenti.

Aprire la pagina About.aspx , eliminare tutto il markup all'interno dell'elemento MainContentContent e inserire il markup seguente nel relativo posto:

<h2>Student Body Statistics</h2>
    <asp:ObjectDataSource ID="StudentStatisticsObjectDataSource" runat="server" TypeName="ContosoUniversity.BLL.SchoolBL"
        SelectMethod="GetStudentStatistics" DataObjectTypeName="ContosoUniversity.DAL.EnrollmentDateGroup">
    </asp:ObjectDataSource>
    <asp:GridView ID="StudentStatisticsGridView" runat="server" AutoGenerateColumns="False"
        DataSourceID="StudentStatisticsObjectDataSource">
        <Columns>
            <asp:BoundField DataField="EnrollmentDate" DataFormatString="{0:d}" HeaderText="Date of Enrollment"
                ReadOnly="True" SortExpression="EnrollmentDate" />
            <asp:BoundField DataField="StudentCount" HeaderText="Students" ReadOnly="True"
                SortExpression="StudentCount" />
        </Columns>
    </asp:GridView>

Eseguire il progetto e selezionare la pagina Informazioni .

Pagina About (Informazioni)

Distribuire in Test usando la riga di comando

Non verrà distribuita un'altra modifica del database, quindi disabilitare la distribuzione del database dbDacFx per il database aspnet-ContosoUniversity. Aprire la procedura guidata Pubblica Web e in ognuno dei tre profili di pubblicazione deselezionare la casella di controllo Aggiorna database nella scheda Impostazioni .

Nella pagina Start di Windows 8 cercare il prompt dei comandi per sviluppatori per VS2012.

Fare clic con il pulsante destro del mouse sull'icona per il prompt dei comandi per sviluppatori per VS2012 e scegliere Esegui come amministratore.

Immettere il comando seguente al prompt dei comandi, sostituendo il percorso del file della soluzione con il percorso del file della soluzione:

msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=Test

MSBuild compila la soluzione e la distribuisce nell'ambiente di test.

Output della riga di comando

Aprire un browser e passare a http://localhost/ContosoUniversity, quindi fare clic sulla pagina Informazioni per verificare che la distribuzione sia riuscita.

Se non sono stati creati studenti in test, verrà visualizzata una pagina vuota sotto l'intestazione Statistiche corpo studente . Passare alla pagina Studenti , fare clic su Aggiungi studente e aggiungere alcuni studenti e quindi tornare alla pagina Informazioni per visualizzare le statistiche degli studenti.

Screenshot che mostra le statistiche del corpo degli studenti nella pagina Informazioni.

Opzioni della riga di comando chiave

Il comando immesso ha passato il percorso del file della soluzione e due proprietà a MSBuild:

msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true 
/p:PublishProfile=Test

Distribuzione della soluzione rispetto alla distribuzione di singoli progetti

Se si specifica il file di soluzione, tutti i progetti nella soluzione devono essere compilati. Se nella soluzione sono presenti più progetti Web, si applica il comportamento di MSBuild seguente:

  • Le proprietà specificate nella riga di comando vengono passate a ogni progetto. Pertanto, ogni progetto Web deve avere un profilo di pubblicazione con il nome specificato. Se si specifica /p:PublishProfile=Test, ogni progetto Web deve avere un profilo di pubblicazione denominato Test.
  • È possibile pubblicare correttamente un progetto quando un altro non esegue nemmeno la compilazione. Per altre informazioni, vedere il thread stackoverflow MSBuild ha esito negativo con due pacchetti.

Se si specifica un singolo progetto anziché una soluzione, è necessario aggiungere un parametro che specifica la versione di Visual Studio. Se si usa Visual Studio 2012, la riga di comando sarà simile all'esempio seguente:

msbuild C:\ContosoUniversity\ContosoUniversity\ContosoUniversity.csproj /p:DeployOnBuild=true /p:PublishProfile=Test /p:VisualStudioVersion=11.0

Il numero di versione per Visual Studio 2010 è 10.0. Per altre informazioni, vedere Compatibilità del progetto di Visual Studio e VisualStudioVersion nel blog di Sayed Hashimi.

Specifica del profilo di pubblicazione

È possibile specificare il profilo di pubblicazione in base al nome o al percorso completo del file pubxml , come illustrato nell'esempio seguente:

msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=C:\ContosoUniversity\ContosoUniversity\Properties\PublishProfiles\Test.pubxml

Metodi di pubblicazione Web supportati per la pubblicazione da riga di comando

Per la pubblicazione della riga di comando sono supportati tre metodi di pubblicazione:

  • MSDeploy - Pubblicare tramite Distribuzione Web.
  • Package - Pubblicare creando un pacchetto di distribuzione Web. È necessario installare il pacchetto separatamente dal comando MSBuild che lo crea.
  • FileSystem - Pubblicare copiando i file in una cartella specificata.

Specifica della configurazione e della piattaforma di compilazione

La configurazione di compilazione e la piattaforma devono essere impostate in Visual Studio o nella riga di comando. I profili di pubblicazione includono proprietà denominate LastUsedBuildConfiguration e LastUsedPlatform, ma non è possibile impostare queste proprietà per determinare la modalità di compilazione del progetto. Per altre informazioni, vedere MSBuild: come impostare la proprietà di configurazione nel blog di Sayed Hashimi.

Eseguire la distribuzione per lo staging

Per distribuire in Azure, è necessario aggiungere la password alla riga di comando. Se è stata salvata la password nel profilo di pubblicazione in Visual Studio, è stata archiviata in formato crittografato nel file .pubxml.user . Questo file non è accessibile da MSBuild quando si esegue una distribuzione della riga di comando, quindi è necessario passare la password in un parametro della riga di comando.

  1. Copiare la password necessaria dal file con estensione publishsettings scaricato in precedenza per il sito Web di staging. La password è il valore dell'attributo per l'elemento userPWD Distribuzione publishProfile Web.

    Password di distribuzione Web

  2. Nella pagina Start di Windows 8 cercare Il prompt dei comandi per sviluppatori per VS2012 e fare clic sull'icona per aprire il prompt dei comandi. Non è necessario aprirlo come amministratore questa volta perché non si distribuisce in IIS nel computer locale.

  3. Immettere il comando seguente al prompt dei comandi, sostituendo il percorso del file della soluzione con il percorso del file della soluzione e la password con la password:

    msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=Staging /p:Password=hdNSWsbuqno7J5uqnwKafwlfNPt1DSco7J5uqnwKafwlfNPt1DSpKHuYgCco7J5 /p:AllowUntrustedCertificate=true
    

    Si noti che questa riga di comando include un parametro aggiuntivo: /p:AllowUntrustedCertificate=true. Poiché questa esercitazione viene scritta, la AllowUntrustedCertificate proprietà deve essere impostata quando si pubblica in Azure dalla riga di comando. Quando viene rilasciata la correzione per questo bug, non sarà necessario tale parametro.

  4. Aprire un browser e passare all'URL del sito di gestione temporanea e quindi fare clic sulla pagina Informazioni per verificare che la distribuzione sia riuscita.

    Come si è visto in precedenza per l'ambiente di test, potrebbe essere necessario creare alcuni studenti per visualizzare le statistiche nella pagina Informazioni .

Distribuire nell'ambiente di produzione

Il processo di distribuzione in produzione è simile al processo di gestione temporanea.

  1. Copiare la password necessaria dal file con estensione publishsettings scaricato in precedenza per il sito Web di produzione.

  2. Aprire il prompt dei comandi per sviluppatori per VS2012.

  3. Immettere il comando seguente al prompt dei comandi, sostituendo il percorso del file della soluzione con il percorso del file della soluzione e la password con la password:

    msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=Production /p:Password=hdNSWsbuqnwKafwlo7J5uqnwKafwlfNPt1DSqnwKafwlfNPt1DSpKHuYgCco7J5 /p:AllowUntrustedCertificate=true
    

    Per un sito di produzione reale, se esiste anche una modifica del database, in genere si copia il file diapp_offline.htm nel sito prima della distribuzione ed eliminarlo dopo la distribuzione.

  4. Aprire un browser e passare all'URL del sito di gestione temporanea e quindi fare clic sulla pagina Informazioni per verificare che la distribuzione sia riuscita.

Riepilogo

È stato ora distribuito un aggiornamento dell'applicazione usando la riga di comando.

Screenshot che mostra la pagina Informazioni che visualizza le statistiche del corpo degli studenti.

Nell'esercitazione successiva verrà illustrato un esempio di come estendere la pipeline di pubblicazione Web. L'esempio illustra come distribuire i file che non sono inclusi nel progetto.