【问题标题】:Invalid file names when trying to deploy SSDT project with TeamCity 8尝试使用 TeamCity 8 部署 SSDT 项目时文件名无效
【发布时间】:2013-07-25 08:10:36
【问题描述】:

我正在尝试使用 TeamCity 8 和 MSBuild Publish 任务将 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 中生成了正确的 .sql 和 .dacpac 文件(中间没有 .sqlproj) /Debug 文件夹。

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

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

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

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

或者我打算使用 MSBuild 的 Publish 任务是徒劳的,我应该改用 sqlpackage.exe 吗?

更新

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

【问题讨论】:

  • 我知道我决定使用 SQLPackage 是因为它更容易一些,但实际上并没有尝试使用 msbuild 发布,因为我们停止使用 DBProj 文件以支持 SQLProj。您说从命令行运行命令时没有错误,但它实际上对发布更改有什么作用吗?如果是这样,我认为您的文件路径或权限可能存在问题。也许分步构建和发布会有所帮助?
  • 已经分步进行。我在工作文件夹和数据库中检查了权限 - 一切正常。
  • 如果将 msbuild 切换为发布到 SQLPackage 以发布选项会发生什么?
  • 感谢 Peter 与我一起思考,SqlPackage 第一次工作,所以我会一直使用它,直到弄清楚为止。
  • 我们有一个相关的问题。在我们的例子中,我们使用 sqlpackage.exe 发布得很好。当我们通过 MSBuild 与 TeamCity 一起构建时,它会输出名为 MyProject.sqlproj.dacpac 的文件。棘手的是,如果这个文件留在构建服务器上并运行另一个构建,它似乎像我们预期的那样保存了 MyProject.dacpac。似乎它可能会选择以前的 MyProject.sqlproj.dacpac 并在生成新的 MyProject.sqlproj.dacpac 之前将其重命名为 MyProj.dacpac。你有没有追根究底?

标签: deployment msbuild teamcity sql-server-data-tools


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多