我正在尝试自动化我们的构建/部署过程.
到目前为止,我正在使用:
因此,经过多次争吵和咬牙切齿之后,我现在让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>
Run Code Online (Sandbox Code Playgroud)
只要在目标机器上已经有一个在IIS中配置的网站,这一切都可以正常工作.这不需要是现有的"真实"站点(它可能只是一个shell).
虽然这很棒,但我真的希望MSDeploy能够自动创建网站,因为它似乎可以用于网络应用程序.这可能吗?如果有的话,任何帮助将不胜感激!
有没有办法将视图构建限制为只包含在.csproj文件中的文件?或者至少有一种方法可以排除某些文件夹的构建?
在我们的项目文件夹结构中,我们有一个\ Admin\Mocks文件夹,其中包含大量模拟的.aspx和.cshtml文件,而.\ Admin\Mocks文件夹不包含在.csproj文件中(虽然\ Admin是),似乎该树中的所有文件都已构建完毕.这当然会产生大量的构建错误.
我不确定这会有什么不同,但我们的项目是使用Asp.Net 4的混合WebForms/Mvc3应用程序(WebForms和Razor View Engines).