使用TFS构建进行多个Web部署打包

3
我们有几个Web服务需要使用“msdeploy”手动部署。 我们从TFS2010构建机器中适当的“_PublishedWebsites\_Package”目录中获取部署包。
现在,我们想要将部署包与部署工具捆绑在一起,以使进行安装的人更容易看到参数。
我们想要做的是构建单独的Web服务部署包,使部署包在部署工具构建时落在正确的位置,然后让部署工具同时构建工具并将先前构建的部署包复制到构建机器上相同的“Binaries”下拉文件夹中。
由于某种原因,这似乎非常难以实现。
我们尝试过的事情
  • 在Web服务项目的Package/Publish Web项目设置中,使用变量(例如$(TargetDir))来设置创建包的位置。Visual Studio会解释输入的变量并将其替换为开发机器上的硬编码路径...这就是传递到构建机器的内容。在构建机器上的最终结果是...什么也没有;部署包仍然被发送到_PublishedWebsites\<<ProjectName>>_Package

  • 在TFS构建定义的“Process”/“Advances”部分的MSBuild Arguments设置中添加/p:PackageLocation,以及/p:CreatePackageOnPublish=true /p:DeployOnBuild=true。所有这些只是生成了错误:

    MSB1008: 只能指定一个项目。Switch: p:PackageLocation=$(BinariesRoot)\DeploymentFiles For switch syntax, type "MSBuild /help"

    可能是因为构建生成了多个部署包。

任何建议都受到欢迎!我们是不是走了错误的路?我们应该像为其他问题提供 this page suggests 那样改变构建 XAML 来满足这个问题吗?
1个回答

2
以下是需要翻译的内容:

有几种可能供您考虑:

1- 修改TFS工作流程,如您所描述的那样,执行一些复制任务

2- 创建一个MSBuild项目,在您的标准打包步骤之后运行,将输出从_PublishedWebsites复制到您选择的某个位置

3- 在构建包时覆盖以下MSBuild参数以更改包放置位置:

 <DefaultPackageOutputDir Condition="'$(DefaultPackageOutputDir)'==''">$(OutDir)[YourDesiredLocation]\$(DefaultMSDeployDestinationApplicationName)\Package</DefaultPackageOutputDir>

请注意,您可以在以下位置查看可用于打包的MSBuild参数集:
 c:\program files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets

最近我在客户端实施了建议#2,使用建议#3中提到的MSBuild覆盖,在自定义的MSBuild项目文件中,这个方法非常有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接