我正在尝试自动化构建/部署过程。
到目前为止,我正在使用:
因此,经过多次争吵和咬牙切齿之后,我现在让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中配置的网站,这一切都可以正常工作。这不需要是现有的“真实”站点(它可能只是一个shell)。
虽然这很棒,但我真的希望MSDeploy能够自动创建网站,因为它似乎可以用于网络应用。这可能吗?如果有的话,任何帮助将不胜感激!
答案 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。