【问题标题】:Deploying database and web projects during TFS build process在 TFS 构建过程中部署数据库和 Web 项目
【发布时间】:2012-04-02 17:15:50
【问题描述】:

我有一个包含几个 Web 应用程序和 SQL 数据库项目的混合解决方案。

我还有一个带有 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 部署并避免用户帐户问题的最简单方法(以避免设置 /p:UserName=YOURUSERNAME /p:Password=YOURPASSWORD 在 XAML 或构建定义中)?

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

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

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

【问题讨论】:

标签: tfs build-process web-deployment mixed database-deployment


【解决方案1】:

这两个网站:

You are deploying it wrong

Headless msbuild support for ssdt sqlproj projects

帮助我正确设置了所有内容。

现在我知道 WMSVC 是在 IIS7 上远程发布的首选(优于 RemoteAgent)方法,但我需要在目标服务器上安装 WebDeploy。在 localhost 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 项目使用了发布目标,并且它们实际上可以很好地发布到 SQL 服务器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-10
    • 1970-01-01
    • 2014-06-17
    • 1970-01-01
    相关资源
    最近更新 更多