部署网站以删除TFS构建服务器上的文件夹

时间:2014-07-16 09:14:56

标签: deployment msbuild continuous-integration tfs2012 tfsbuild

我在构建服务器上使用TFS 2012进行持续集成,并且还为其他环境构建。我正在部署包含两个网站和一个控制台应用程序的.net 4.0 webforms解决方案到构建服务器,在drop文件夹中我得到一个_PublishedWebsites文件夹,其中包含我指定的自定义配置(即不是调试或发布)的部署包。我为每个网站获得了正确的.Web_Package。

我在构建过程中使用MSBuildArgumments设置如下:

/p:DeployOnBuild=true /p:PublishProfile=Development/p:VisualStudioVersion=10.0

一切运作良好,但团队负责人希望在drop-folder而不是部署包中进行实际部署。

我查看了MS Documentation,但在我的情况下似乎没有帮助。

我尝试过创建一个脚本,但我不想进入一系列大量的PowerShell脚本,无论如何我都在使用PowerShell。我不能让它做我想做的事。

我的问题是:这可以做到,最好的方法是什么?如果它确实意味着创建一个脚本那么就是它(每个对象可能只有一行) - 我真的很难找到我应该去的方向。

我认为一个脚本包含每行3行的一行,如下所示:

_PublishedWebsites/<project name>.Web_Package/<project name>.deploy.cmd /T: /M:<site> /U:<user> /P:<password>

但是在哪里放脚本以及如何调用?

2 个答案:

答案 0 :(得分:2)

我最终使用了此博客文章中描述的解决方案:

http://blog.degree.no/2012/03/automatic-config-transformations/

为了得到我需要的东西,我需要更改要部署的项目的项目文件 - 在each.csproj文件的顶部添加这个额外的节点

<Target Name="TransformConfigFiles" AfterTargets="AfterBuild" Condition="'$(TransformConfigFiles)'=='true'">
    <ItemGroup>
      <DeleteAfterBuild Include="$(WebProjectOutputDir)\Web.*.config" />
    </ItemGroup>
    <TransformXml Source="Web.config" Transform="$(ProjectConfigTransformFileName)" Destination="$(WebProjectOutputDir)\Web.config" />
    <Delete Files="@(DeleteAfterBuild)" />
  </Target>

并将此开关添加到构建定义中的MSBuildArguments:

/p:TransformConfigFiles=true

答案 1 :(得分:0)

当我使用DeployOnBuild开关运行我的构建时,我的构建输出两个文件夹,一个包含Package,另一个包含所有网站文件(均在PublishedWebsites下)。这不是你想要的吗?

我有:

  

BuildDrop_PublishedWebsites \网站

     

BuildDrop_PublishedWebsites \ Website_Package