Asp.net

如何將建構的網站包 MSDeploy 到原始 IIS 網站

  • October 1, 2010

我正在嘗試自動化我們的建構/部署過程。

到目前為止,我正在使用:

  • 帶有主Web 應用程序項目(和依賴項目)的 Visual Studio 2010 解決方案
  • 微軟建構
  • 微軟部署
  • CruiseControl.Net

因此,經過多次爭論和咬牙切齒,我現在讓 CCNet 啟動了一個MSBuild腳本來建構、打包和部署網站。MSBuild腳本如下:

<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=""$(MSDeployPath)" -source:package='$(PackageDir)\Product.zip' -dest:auto,computerName='$(MSDeployComputerName)',includeAcls='False' -verb:sync -setParamFile:$(PackageDir)\Product.SetParameters.xml" ContinueOnError="false" />
</Target>

只要在目標機器上已經在 IIS 中配置了一個網站,這一切都可以正常工作。這不需要是現有的“真實”站點(它可能只是一個外殼)。

雖然這很棒,但我真的希望 MSDeploy 能夠自動創建網站,因為它似乎可以使用 Web 應用程序。這可能嗎?如果是這樣,任何幫助將不勝感激!

很確定 MSDeploy 不能那樣做。我過去做過的一件事是有一個 Exec 任務呼叫 appcmd.exe 來拆除/建立一個新網站。MSBuild 社區任務具有一些網站功能以及MSBuild 擴展包

MSDeploy 有這個能力,你只需要鉤住正確的提供者。

例如,您在目標中使用“自動”提供程序,它基本上表示目標將與您設置為包的源相同(或兼容)。由於包沒有指定其託管環境,因此 msdeploy 不會嘗試對其進行任何操作,它基本上只是從包中復製文件。

您正在呼叫 auto (“-dest: auto”):

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

要讓 msdeploy 創建站點,您需要使用更具體的提供程序,該提供程序了解“站點”和“應用程序”的概念以及它們如何將包用作網站元素的內容。

我有一段時間沒有這樣做了,所以我不想詳細說明(因為我可能會誤導你),但請查看有關 msdeploy 提供程序的 MSDN 文件。

第一次看auto,你目前的設置。然後看看iisAppappHostconfig

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

如果使用得當,我相信這兩個中的一個將為您創建站點/應用程序,並為您提供所需的結果。

引用自:https://stackoverflow.com/questions/3638873