3

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

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

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

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

4

1 回答 1

3

这两个网站:

你部署错了

对 ssdt sqlproj 项目的无头 msbuild 支持

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

现在我知道 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 项目使用 Publish 目标,并且它们实际上可以很好地发布到 SQL 服务器。

于 2012-04-04T14:46:52.683 回答