2013-05-03 11 views
12

Sono voler sapere come eseguire il seguenteweb.config trasformare in fase di deploy non costruire

  • Corporatura & pacchetto un sito web ASP.NET al file system
  • Essere in grado di distribuire il sito web a uno o più ambienti. Voglio che le trasformazioni del file di configurazione avvengano sul punto di distribuzione, piuttosto che sul punto di costruzione. In questo modo il mio codice non viene ricompilato per ogni distribuzione e non c'è il rischio che vengano introdotte nuove modifiche.

Dalla mia lettura non sono sicuro di come farlo. WebDeploy sembra pacchettizzare, trasformare e distribuire in base a una configurazione, ma non so come questi passaggi possano essere disaccoppiati per evitare la necessità di ricompilare il codice dal controllo del codice sorgente.

Qualcuno ha esperienza nel risolvere questo problema?

+0

Avete visto il PackageW pacchetto NuGet eb? http://sedodream.com/2011/12/24/PackageOncePublishAnywhere.aspx http://nuget.org/packages/PackageWeb – tdykstra

+0

[OctopusDeploy] (https://octopusdeploy.com/) ha finito per essere la soluzione di immagine più grande per il problema che stavo cercando di risolvere qui. –

risposta

8

È possibile utilizzare la funzione di parametrizzazione della distribuzione Web a.k.a MSDeploy. Sarà necessario utilizzare un file parameters.xml e un file setParameters.xml per scambiare dinamicamente le impostazioni poiché non si sta trasformando il pacchetto in fase di compilazione.

Al momento della distribuzione è possibile passare in qualsiasi file .xml per impostare i parametri specificati nel file parameters.xml. Poiché parameters.xml è alla radice della soluzione del progetto (ad esempio, vedi il link di esempio su dove posizionare il file), quindi al momento della compilazione viene inserito nel pacchetto web. Tuttavia, ora è possibile modificare questi valori passando il file .xml setParms dalla riga di comando durante la distribuzione. Questo è diverso dalla trasformazione dei valori durante il tempo di compilazione in base alle impostazioni di configurazione.

Ecco un esempio di riga di comando msdeploy di passaggio in un ParamFile per un ambiente di gestione temporanea.

msdeploy -verb:sync -source:package="c:\packages\mypackage.zip" -dest:auto,computername=StagingServer1 -setParamFile="c:\StagingParameters.xml" 

Vedi i link qui sotto per gli esempi e MSDN informazioni tecniche:

Web Deploy Parameterization in Action

Parameterization vs. Web.Config Transformation

Web Deploy Operation Settings

Similar question on stackoverflow that provides several methods

+0

Grazie a @SoftwareCarpenter, la funzione di parametrizzazione ha un potenziale reale. Sai se è possibile stampare più file setParameters.xml? vale a dire: uno per ogni ambiente. In questa fase mi manca come posso pubblicare un set di parametri per ambiente in modo che uno possa essere scelto in fase di distribuzione. –

+0

Assolutamente, questa è la bellezza di questo approccio. È possibile passare in qualsiasi file .xml con i valori per l'ambiente che si desidera utilizzare al momento della distribuzione utilizzando il parametro della riga di comando setParamFile. Vedi la risposta aggiornata per chiarimenti e controlla anche il link "Web Deploy Parameterization in action". Spero che questo ti aiuti. – SoftwareCarpenter

+0

controlla anche questo link se hai ancora bisogno di ulteriori spiegazioni: http://www.asp.net/web-forms/tutorials/deployment/web-deployment-in-the-enterprise/configuring-parameters-for-web-package -deployment – SoftwareCarpenter

Problemi correlati