2010-09-03 14 views
10

Kuruluş/dağıtım işlemimizi otomatikleştirmeye çalışıyorum.Oluşturulmuş bir web sitesi paketini Microsoft IIS web sitesine nasıl eklersiniz

Şimdiye kadar kullanıyorum:

  • bir ana Web Uygulaması projesi (ve bağımlı projelerde)
  • MSBuild
  • MSDeploy
  • ile Visual Studio 2010 çözüm CruiseControl.Net

Dişlerin çoğalması ve gıcırdamasından sonra, şimdi CCNet'in web sitesini oluşturmak, paketlemek ve dağıtmak için bir MSBuild betiğini başlatıyorum. MSBuild komut aşağıdaki gibidir:

<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> 

Bu, tüm IIS yapılandırılmış bir web sitesi zaten var hedef makinede sürece iyi çalışır. Bunun mevcut bir "gerçek" site olması gerekmez (sadece bir kabuk olabilir).

Bu harika olsa da, MSDeploy'un bir web uygulamasıyla yapabileceği gibi web sitesini otomatik olarak oluşturmasını gerçekten istiyorum. Mümkün mü? Ve eğer öyleyse, herhangi bir yardım çok takdir edilecektir!

cevap

4

Çok emin MSDeploy bunu yapamaz. Geçmişte yaptığım bir şey yeni bir web sitesi kurmak/kurmak için appcmd.exe bir Exec görev çağrısı var. MSBuild Community Tasks, bazı web sitesi yeteneklerinin yanı sıra MSBuild Extension Pack'a da sahiptir.

+1

Bu da bulduğum şeydir - msdeploy -verb kullanılır: sync -source: runCommand = c: \ mycommand.bat, computername = MyServer -dest: auto, mycommand.bat appcmd.exe komutlarını içerir. IIS – zcrar70

10

MSDeploy yeteneği vardır, sadece doğru sağlayıcıyı kanca gerekir. Örneğin, hedefiniz paket olarak kurmakta olduğunuz kaynakla aynı (veya uyumlu) olacak olan temel olarak "otomatik" sağlayıcısını kullanıyorsunuz. Bir paket barındırma ortamını belirtmediğinden, msdeploy onunla hiçbir şey yapmaya çalışmayacak, yalnızca dosyaları temelden paketlemeye başlayacaktır. (": Auto -dest"):

You auto aradığınız

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

sitesi oluşturmak için msdeploy almak için, bir kavramlarını anlama daha spesifik bir sağlayıcı kullanmak gerekir "site" ve bir "uygulama" ve paketi bir web sitesi öğesinin içeriği olarak nasıl kullanabilirler.

Bunu bir süredir yapmadım, bu yüzden ayrıntıları belirtmek istemiyorum (yanlış yönlendireceğim gibi), ancak msdeploy sağlayıcıları üzerindeki MSDN belgesine bir göz atın.

İlk bakış otomatik, geçerli ayarınız. Sonra iisApp ve appHostconfig'a bir göz atın.

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

Ben doğru kullanıldığı takdirde sizin için site/uygulama oluşturur bu 2 tane inanıyoruz ve size ihtiyacınız sonucu verecektir.

+0

'da yeni siteyi oluşturma appHostConfig bir IIS yapılandırmasını hedef sunucudaki yeni bir siteye kopyalayabilir, ancak kopyalamak için bir kaynağa sahip olmadan hedef sunucuda sıfırdan yeni bir site oluşturabileceğini düşünmüyorum. – zcrar70

+0

Evet, hatırlayamadığım zamanlarda hem iisApp hem de appHostConfig'i listeledim. iisApp sağlayıcı, site oluşturması gereken createApp sağlayıcısını kancalar. –