2012-04-02 141 views
3

我有一对Web应用程序和SQL数据库项目的混合解决方案。在TFS构建过程中部署数据库和Web项目

我也有一个MS SQL 2012和IIS 7的远程测试服务器.TFS生成服务器在另一台机器上。所有服务器都配置在单个域中。

我想在构建过程中部署数据库和Web应用程序。

现在我已经使用了以下标志设置编译包产生的TFS XAML进程文件:

/p:DeployOnBuild=True 

,我还建立了网上发布的其他标志:

/p:DeployTarget=MsDeployPublish 
/p:CreatePackageOnPublish=True 
/p:MsDeployPublishMethod=WMSVC 
/p:AllowUntrustedCertificate=True 

但我有点困惑,应该使用哪种方法:WMSVC或远程代理或其他。 哪种设置从TFS构建服务器到IIS 7服务器的Web部署最简单的方法,并避免用户帐户的问题(以避免在XAML或构建定义中设置/ p:UserName = YOURUSERNAME /p:Password = YOURPASSWORD)?

另一个问题是关于数据库项目。构建过程已经生成了一些.dacpac文件。从TFS构建过程XAML部署它们的最佳方式是什么?

由于我的解决方案有混合类型的项目,我不确定如何调整构建过程,以便正确地检测哪些项目需要数据库部署,哪些需要Web部署。

我希望MSBuild/MSDeploy足够聪明,只要忽略那些/ p:标志,如果currrent项目不是一个web应用程序,或者它可能会导致整个构建过程的失败?

+2

我刚刚创建这个很长一段时间,所以它没有更新,所以我没有用这篇文章回答你的问题,但仍然有效,可以帮助你http://mohamedradwan.wordpress.com/2010/10/23/自动部署你的网站为QA与团队建设/第二个http://mohamedradwan.wordpress.com/2010/10/15/deploy-db-project-with-team-build-2010 / – 2012-04-02 17:32:03

回答

3

这两个网站:

You are deploying it wrong

Headless msbuild support for ssdt sqlproj projects

帮了我很多正确地设置了一切。

现在我知道在IIS7上远程发布首选WMSVC(通过RemoteAgent)方法,但我需要在目标服务器上安装WebDeploy。在本地主机InProc工作得很好。

其中一个主要问题是,在构建所有解决方案后,我试图发布Web应用程序,但MSBuild一直说“跳过不可发布的应用程序”。

,问题就

Targets="Publish" 

在我的MSBuild脚本。当我把它改成

Targets="Build" 

,并把性能为我的项目:

Configuration=Release; 
    SkipInvalidConfigurations=true; 
    DeployOnBuild=true; 
    CreatePackageOnPublish=true; 
    AllowUntrustedCertificate=true; 
    DeployTarget=MsDeployPublish; 
    MSDeployPublishMethod=InProc; 
    MsDeployServiceUrl=localhost; 
    DeployIISAppPath=Default Web Site\MyWebApp 

它最后居然开始发布到在我的本地的IIS7。

呃,为什么Publish目标没有发布,但只有Build目标呢?这对我来说是个谜。特别是因为我为我的sqlproj项目使用Publish目标,并且它们实际上已发布到SQL Server上。