3

我正在尝试使用 TeamCity 8 和 MSBuild 发布任务将 Visual Studio 2012 SSDT 项目部署到 Sql Server,但部署失败。

当我查看 TeamCity 日志并在构建配置中使用 /v:diag 开关时,我发现 MSBuild 出于未知原因搜索MyProject .sqlproj .publish.sql 和MyProject .sqlproj .dacpac 文件。

确切的错误:

[SqlPublishTask] C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\SSDT\Microsoft.Data.Tools.Schema.SqlTask​​s.targets(1233, 5): 文件 "C:\Program Files\TeamCity \buildAgent\work\abf8bc05a2cfe7f\*MyProject*\bin\Debug\*MyProject*.sqlproj.dacpac" 不存在。

在 buildAgent/work/ identificator /*MySolution*/ MyProject /bin/Debug 文件夹中生成了正确的 .sql 和 .dacpac 文件(中间没有 .sqlproj) 。

我的 TeamCity 构建步骤配置如下:

  • 跑步者类型:MSbuild
  • 构建文件路径:MyProject /*MyProject*.sqlproj
  • MSBuild 版本:4.5
  • MsBuild 工具版本:4.0
  • 运行平台:4.0
  • 目标:发布
  • 命令行参数:/p:SqlPublishProfilePath="Debug.publish.xml" /p:Configuration=Debug

如果我从命令行执行此操作,我不会收到任何错误。

关于如何配置 TeamCity 以搜索正确文件或配置我的项目以生成 TeamCity 正在搜索的文件的任何想法。

还是我计划使用 MSBuild 的发布任务是徒劳的,我应该使用它sqlpackage.exe

更新

在花了将近三天的时间试图弄清楚这一点后,我放弃了并使用了sqlpackage.exe它的魅力。但是我仍然会对答案感兴趣,将路径传递给构建服务器中的可执行文件似乎有点粗略。

4

2 回答 2

2

我遇到了类似的问题,并得出结论,TeamCity 生成带有 *.teamcity 后缀的“伪项目”文件的方式使 MSBuild/SSDT 目标链中的某些内容感到困惑。

我只是用纯命令行步骤替换了 MSBuild 运行器构建步骤,问题就消失了。

我们失去了 TeamCity MSBuild 运行器配置的用户友好性,但如果它有效,这是我愿意做出的妥协。

注意 - 我们正在运行 TeamCity 7 - 我不确定这是否已在以后的版本中得到解决。

于 2014-10-20T20:31:50.827 回答
0

我发现您可以在构建配置上设置一个名为“system.SqlTargetName”的系统属性来覆盖默认值。

将此设置为您的项目名称而没有“.sqlproj”会使错误消失。

于 2017-08-17T18:22:18.203 回答