如何将已构建的网站包MSdeploy到原始IIS网站

时间:2010-09-03 19:19:30

标签: asp.net msbuild cruisecontrol.net msdeploy

我正在尝试自动化构建/部署过程。

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

  • 带有主 Web应用程序项目(和依赖项目)的Visual Studio 2010解决方案
  • 的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中配置的网站,这一切都可以正常工作。这不需要是现有的“真实”站点(它可能只是一个shell)。

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

2 个答案:

答案 0 :(得分:10)

MSDeploy具有此功能,您只需要挂钩正确的提供程序。

例如,您在目的地中使用“自动”提供程序,它基本上表示目标将与您正在设置的来源相同(或兼容)作为一个包。由于包没有指定其托管环境,msdeploy不会尝试对它做任何事情,它只是从包中复制文件。

您正在调用自动​​(“ - dest:auto”):

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

要让msdeploy创建网站,您需要使用更具体的提供程序,该提供程序了解“网站”和“应用程序”的概念以及他们如何将程序包用作网站元素的内容。

我有一段时间没有这样做,所以我不想详细说明(因为我会错误地指导你),但是请查看msdeploy提供程序上的MSDN文档。

首先查看自动,即当前设置。然后查看 iisApp appHostconfig

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

我相信如果使用得当,其中一个会为您创建网站/应用,并会为您提供所需的结果。

答案 1 :(得分:4)

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