2010-09-03 17 views
10

Sto tentando di automatizzare il processo di generazione/distribuzione.Come MSDeploy un pacchetto di sito Web incorporato in un sito IIS vergine

Finora sto usando:

  • una soluzione di Visual Studio 2010 con un principale progetto Web Application (e progetti dipendenti)
  • MSBuild
  • MSDeploy
  • CruiseControl.Net

Quindi dopo molte discussioni e stridore di denti, ora CCNet ha avviato uno script MSBuild per creare, impacchettare e distribuire il sito Web. La sceneggiaturaMSBuild è qui sotto:

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
<Target Name="Build"> 
    <MSBuild Projects="$(CCNetWorkingDirectory)\src\Product.sln" 
        Targets="Clean;Rebuild" 
        Properties="Configuration=$(Configuration)" 
    /> 
</Target> 

<!--<Target Name="Test" DependsOnTargets="Build"> 
    <MSBuild Projects="$(CCNetWorkingDirectory)\src\Product.Web.Tests\Product.Web.Tests.csproj" 
        Properties="Configuration=$(Configuration);OutputPath=$(CCNetArtifactDirectory)\Tests\" /> 
    <Exec Command="$(MSTestPath) /testcontainer:$(CCNetArtifactDirectory)\Tests\Product.Web.Tests.dll /runconfig:$(CCNetWorkingDirectory)\src\Local.testsettings" ContinueOnError="false" /> 
</Target>--> 

<Target Name="Package" DependsOnTargets="Build"> 
    <MSBuild Projects="$(CCNetWorkingDirectory)\src\Product.Web\Product.Web.csproj" 
        Targets="Package" 
        Properties="Configuration=$(Configuration);PackageLocation=$(PackageDir)\Product.zip" 
    /> 
</Target> 

<Target Name="Deploy" DependsOnTargets="Package"> 
    <Exec Command="&quot;$(MSDeployPath)&quot; -source:package='$(PackageDir)\Product.zip' -dest:auto,computerName='$(MSDeployComputerName)',includeAcls='False' -verb:sync -setParamFile:$(PackageDir)\Product.SetParameters.xml" ContinueOnError="false" /> 
</Target> 

Questo tutto funziona bene fino a quando sul computer di destinazione esiste già un sito web configurato in IIS. Questo non ha bisogno di essere un sito "reale" esistente (potrebbe essere solo una shell).

Mentre questo è ottimo, desidero veramente che MSDeploy crei automaticamente il sito Web, come sembra possa fare con un'app Web. È possibile? E se così fosse qualsiasi aiuto sarebbe molto apprezzato!

risposta

4

Piuttosto sicuro che MSDeploy non può farlo. Una cosa che ho fatto in passato è avere un task chiamata Exec appcmd.exe per abbattere/costruire un nuovo sito web. Lo MSBuild Community Tasks ha alcune funzionalità del sito Web nonché lo MSBuild Extension Pack.

+1

Questo è anche quello che ho trovato - Ho usato msdeploy -verb: sync -source: runCommand = c: \ mycommand.bat, computername = MyServer -dest: auto, dove mycommand.bat contiene i comandi appcmd.exe per crea il nuovo sito in IIS – zcrar70

10

MSDeploy ha la capacità, basta collegare il provider giusto.

Ad esempio, si sta utilizzando il provider "auto" nella destinazione, che in pratica dice che la destinazione sarà uguale (o compatibile) all'origine, che si sta configurando come pacchetto. Dato che un pacchetto non specifica il suo ambiente di hosting, msdeploy non tenterà di fare nulla con esso, basterà semplicemente copiare i file dal pacchetto in pratica.

Si sta chiamando auto nel (la "-dest: auto"):

-dest:auto,computerName='$(MSDeployComputerName)' 

Per arrivare msdeploy per creare il sito, è necessario utilizzare un provider più specifica che comprendere i concetti di "sito" e "app" e come possono utilizzare il pacchetto come contenuto di un elemento del sito web.

Non l'ho fatto da un po ', quindi non voglio definire particolari (dato che probabilmente vi sbaglierò), ma date un'occhiata al documento MSDN sui provider msdeploy.

primo sguardo a auto, l'impostazione corrente. Quindi dai un'occhiata a iisApp e appHostconfig.

http://technet.microsoft.com/en-us/library/dd569040(WS.10).aspx

Credo che uno di quei 2 creerà il sito/applicazione per voi, se usato correttamente, e vi darà il risultato che vi serve.

+0

appHostConfig può copiare una configurazione IIS in un nuovo sito sul server di destinazione, ma non penso che possa creare un nuovo sito da zero sul server di destinazione senza avere una fonte da cui copiare. – zcrar70

+0

sì, al momento non riuscivo a ricordare quindi ho elencato sia iisApp che appHostConfig. Il fornitore di iisApp collega il provider createApp, che dovrebbe creare il sito –

Problemi correlati