团队构建:使用MSDeploy在本地发布

时间:2010-10-28 10:14:46

标签: tfs msbuild release publish msdeploy

我刚刚开始使用团队构建功能,而且我发现做一些非常简单的事情需要大量的事情。我目前的设置是一个带有Web应用程序,组装应用程序和测试应用程序的解决方案。 Web应用程序具有PublishProfile设置,可通过文件系统发布。

我有一个TFS构建定义设置,它目前每晚构建整个解决方案并将其作为旧构建的备份放到网络共享上。我现在要做的就是拥有PublishProfile我已经设置为我发布Web应用程序。我确定这很简单,但我已经玩了一整天的MSBuild命令而没有运气。救命啊!

3 个答案:

答案 0 :(得分:61)

不幸的是,在MSBuild中不支持或实现共享发布配置文件。从配置文件发布的逻辑包含在VS本身中。幸运的是,配置文件中不包含太多信息,因此有多种方法可以实现您的目标。我们的目标并不特别支持发布对话框所遵循的完全相同的步骤,但是为了从团队构建中获得相同的结果,您有两个选择,我将在此处概述。

当您设置Team Build定义以进行部署时,您需要为构建过程传递MSBuild参数的某些值。见下图,我突出显示了这一点。 alt text

选项1: 传递以下参数:

/p:DeployOnBuild=true;DeployTarget=PipelinePreDeployCopyAllFilesToOneFolder;PackageTempRootDir="\\sayedha-w500\BuildDrops\Publish";AutoParameterizationWebConfigConnectionStrings=false

让我稍微解释一下这些参数,然后向您展示结果然后解释下一个选项。 DeployOnBuild=true:这告诉项目执行DeployTarget属性中定义的目标。

DeployTarget=PipelinePreDeployCopyAllFilesToOneFolder:这指定了DeployTarget目标。

PackageTempRootDir="\\sayedha-w500\BuildDrops\Publish":这指定了包文件的写入位置。这是文件在打包之前写入的位置。

AutoParameterizationWebConfigConnectionStrings=false:这告诉Web发布管道(WPP)不参数化web.config文件中的连接字符串。如果你没有指定这个,那么你的连接字符串值将替换为占位符,如$(ReplacableToken_dummyConStr-Web.config Connection String_0)

执行此操作后,您可以启动构建,然后在PackageTempRootDir位置内找到PackageTmp文件夹,其中包含您要查找的内容。

选项2: 因此,对于上一个选项,您可能会注意到它创建了一个名为PackageTmp的文件夹,如果您不想这样,那么您可以使用以下选项。

/p:DeployOnBuild=true;DeployTarget=PipelinePreDeployCopyAllFilesToOneFolder;_PackageTempDir="\\sayedha-w500\BuildDrops\Publish";AutoParameterizationWebConfigConnectionStrings=false

这里的不同之处在于,您将传递PackageTempRootDir而不是_PackageTempDir。我不建议开头的原因是因为以_开头的MSBuild属性表示该属性基本上是“内部”的,在未来版本中它可能意味着其他东西或根本不存在。因此请自担风险。

选项3

尽管如此,你可以使用构建来打包你的网站。如果您想这样做,请使用以下参数。

/p:DeployOnBuild=true;DeployTarget=Package

当您在构建的drop文件夹中执行此操作时,您将像往常一样找到_PublishedWebsites文件夹,然后在其中将有一个文件夹{ProjectName} _Package其中{ProjectName}是项目的名称。该文件夹将包含软件包,.cmd文件,参数文件和其他几个文件夹。您可以使用这些文件来部署您的网站。

我希望这不是信息过载。

答案 1 :(得分:1)

为DEV-> QA-> RELEASE周期发布网站,配置IIS和推送架构更改的功能需要自定义配置来模拟涉及IIS设置的发布或自定义代码。

从Visual Studio 2013.2开始,Microsoft已添加了第三方产品,该产品使用Windows工作流管理网站部署,配置更改和数据库部署,并且是从TFS构建自动部署的推荐解决方案。

可在此处找到更多信息:

http://www.visualstudio.com/en-us/explore/release-management-vs.aspx

答案 2 :(得分:-2)

您可以使用Visual Studio 2010中的发布/部署。

有关详细信息,请参阅http://www.ewaldhofman.nl/post/2010/04/12/Auto-deployment-of-my-web-application-with-Team-Build-2010-to-add-Interactive-Testing.aspx