如何使用TFS 2010部署网站和数据库项目?

7
我一直在尝试解决这个问题,但到目前为止还没有找到简单的解决方案。使用TFS 2010作为构建过程的一部分部署数据库项目(和网站)真的那么难吗?
我找到了一个例子,涉及很多复杂的检查和编辑工作流程(顺便说一下,这是一个巨大的工作流程)。
我甚至购买了《使用VS 2010进行专业应用程序生命周期管理》这本书,但显然专业人士不部署他们的应用程序,因为这本书中甚至没有提到它。
我知道在TFS方面我很愚蠢,但看起来应该有一种简单的方法来做到这一点。是有吗?

如果您在使用我下面发布的内容时遇到问题,请留言,我会进行更新……因为这是一个非常新的东西,目前还没有太多可供查询的资料,我和您一样需要一边摸索一边学习。如果我漏掉了什么,请让我更新答案以包含它,这样我们就可以帮助别人避免我所经历的相同的问题……我想这就是使用最新技术的代价吧。 - Nick Craver
看起来是个很好的答案。我已经想出了如何部署数据库,所以我会尝试在这里实现你的答案,如果它有效,我一定会将其标记为答案。谢谢! - Bryant
相关 - https://dev59.com/_XE85IYBdhLWcg3wvGGm - Maslow
1个回答

7
我不清楚数据库部分的情况,但我刚刚在网页部分经历了这个问题,其中神奇的部分是没有很好的文档组件,即MSBuild参数。 在您的构建定义中:
  1. 左侧的处理过程
  2. 必需项 > 要构建的项目 > 要构建的配置
    • 编辑,添加一个新的,例如
      • 配置:Dev(下面我将介绍如何创建配置)
      • 平台:任意CPU
  3. 高级 > MSBuild处理
    • 使用以下参数(至少对我来说是这样,您的发布方法可能有所不同)。

MsBuild参数:

/p:MSDeployServiceURL="http://myserver"  
/p:MSDeployPublishMethod=RemoteAgent 
/p:DeployOnBuild=True 
/p:DeployTarget=MsDeployPublish 
/p:CreatePackageOnPublish=True 
/p:username=aduser
/p:password=adpassword

要求:

  1. 您需要在目标Web服务器上安装MS Deploy Remote Agent Service,同时MSDeploy也需要在构建/部署服务器上,但这应该是默认情况。
  2. 您在上述参数中使用的帐户需要具有管理员访问权限,至少需要访问IIS...我不确定最低权限要求是什么。

您可以在正在部署的Web项目中配置站点/虚拟目录。个人建议为每个环境设置一个构建配置,这样可以很容易地处理和组织构建。例如,我们有ReleaseDebugDev(还有更多,但在本例中只有这些)。只有Web项目有一个Dev配置。

为了实现这个目标,右键单击解决方案,选择配置管理器...。在Web项目上点击配置下拉菜单,然后点击新建...。给它起一个名字,例如"Dev",将设置从调试或发布中复制过来,以最接近部署服务器环境的方式进行匹配。确保选中了"创建新的解决方案配置",默认情况下是选中的。创建完成后,将解决方案的配置下拉菜单更改为新的Dev,并且Any CPU...确保你的项目都是正确的,我曾经遇到一些随机翻转到x86和x64,不确定具体原因。
在您的Web项目中,右键单击,选择属性。 在左侧,点击Package/Publish Web(您还需要处理其他Package/Publish SQL选项卡,但我无法对此进行说明)。 在右侧的选项中,单击创建部署包作为zip文件。 默认位置很好,下一个文本框我没有找到任何文档。 格式是这样的:WebSite/Virtual Directory,因此,如果您在IIS中有一个名为“BuildSite”的站点而没有虚拟目录(app == site root),则此框中仅包含BuildSite。 如果它在虚拟目录中,则可能会有Default Web Site/BuildVirtualDirectory
完成所有设置后,请确保检入解决方案和Web项目,以便构建服务器具有您所做的配置更改,然后启动构建 :)
如果你有更多问题,我建议你观看Vishal Joshi的这个视频,特别是在22和59分钟左右,他也涉及了数据库部分...但是由于我们使用的是非MSSQL数据库,所以我没有实际尝试过。

有没有一种方法可以使用Windows身份验证而不是硬编码的用户名/密码? - Maslow
@Maslow - 我不知道有没有这样的功能 - 可能在某个地方允许,但我从未见过相关文档(尽管文档本来就很少...所以这是可能的) - Nick Craver

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