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

Eri*_*dio 10 asp.net cruisecontrol.net msbuild 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>
Run Code Online (Sandbox Code Playgroud)

只要在目标机器上已经有一个在IIS中配置的网站,这一切都可以正常工作.这不需要是现有的"真实"站点(它可能只是一个shell).

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

Tay*_*ird 10

MSDeploy具有此功能,您只需挂钩正确的提供程序即可.

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

你正在调用auto("-dest:auto"):

-dest:auto,computerName='$(MSDeployComputerName)'
Run Code Online (Sandbox Code Playgroud)

要使msdeploy创建站点,您需要使用更具体的提供程序,该提供程序了解"站点"和"应用程序"的概念以及如何使用该程序包作为网站元素的内容.

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

首先看一下auto,你当前的设置.然后看看iisAppappHostconfig.

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

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


Ada*_*les 4

很肯定 MSDeploy 无法做到这一点。我过去做过的一件事是让 Exec 任务调用 appcmd.exe 来拆除/建立一个新网站。MSBuild社区任务具有一些网站功能以及MSBuild 扩展包