10

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

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

  • 带有主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="&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 能够自动创建网站,因为它似乎可以使用 Web 应用程序。这可能吗?如果是这样,任何帮助将不胜感激!

4

2 回答 2

10

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

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

于 2010-09-12T19:02:20.957 回答
4

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

于 2010-09-06T14:03:48.307 回答