2010-09-03 77 views
10

我正试图自动化我们的构建/部署过程。如何MSDeploy构建网站包到原始IIS网站

到目前为止,我使用:

  • 一个Visual Studio 2010的解决方案与主Web应用程序项目(以及相关项目)
  • 的MSBuild
  • MSDeploy
  • 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="&quot;$(MSDeployPath)&quot; -source:package='$(PackageDir)\Product.zip' -dest:auto,computerName='$(MSDeployComputerName)',includeAcls='False' -verb:sync -setParamFile:$(PackageDir)\Product.SetParameters.xml" ContinueOnError="false" /> 
</Target> 

只要这一切工作正常为目标机器上已经存在在IIS中配置一个网站。这不需要是现有的“真实”网站(它可能只是一个外壳)。

虽然这很好,但我真的希望MSDeploy能够自动创建网站,因为它似乎可以使用网络应用程序。这可能吗?如果有的话,任何帮助将不胜感激!

回答

4

很确定MSDeploy不能这样做。我过去做过的一件事是有一个Exec任务调用appcmd.exe来拆除/建立一个新的网站。 MSBuild Community Tasks有一些网站功能以及MSBuild Extension Pack

+1

这也是我发现的 - 我用msdeploy -verb:sync -source:runCommand = c:\ mycommand.bat,computername = MyServer -dest:auto,其中mycommand.bat包含appcmd.exe命令在IIS中创建新网站 – zcrar70 2011-02-03 16:47:28

10

MSDeploy有能力,您只需勾选合适的提供商。

例如,您在目的地使用“auto”提供程序,它基本上表示目标将与源代码相同(或兼容),您将其设置为包。由于软件包没有指定其宿主环境,因此msdeploy不会尝试对它执行任何操作,它只是基本上从软件包中复制文件。

要调用自动在(该“-dest:汽车”):

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

要获得msdeploy创建网站,你需要使用一个更具体的提供者,其理解的概念“网站”和“应用程序”以及他们如何使用该包作为网站元素的内容。

我没有在一段时间内完成这项工作,所以我不想详细列出具体细节(因为我会指导您错误的),但请参阅msdeploy提供程序上的MSDN文档。

1st look at auto,您当前的设置。然后看看iisAppappHostconfig

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

我相信那些2的一个将创建网站/应用为你如果正确使用,并且会给你你需要的结果。

+0

appHostConfig可以将IIS配置复制到目标服务器上的新站点,但我不认为它可以在目标服务器上从头开始创建新站点,而无需从中复制源。 – zcrar70 2011-02-03 16:48:47

+0

是的,当时我不记得了,所以我列出了iisApp和appHostConfig。 iisApp提供程序挂钩了createApp提供程序,它应该创建该站点 – 2011-02-04 01:27:56