Deployment 尝试使用TeamCity 8部署SSDT项目时,文件名无效

Deployment 尝试使用TeamCity 8部署SSDT项目时,文件名无效,deployment,msbuild,teamcity,sql-server-data-tools,Deployment,Msbuild,Teamcity,Sql Server Data Tools,我正在尝试使用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\V

我正在尝试使用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.SqlTasks.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
,它的效果非常好。
但我仍然对一个答案感兴趣,在构建服务器中传递可执行文件的路径似乎有点粗糙

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

我只是用纯命令行步骤替换了MSBuild runner构建步骤,问题就解决了

我们失去了TeamCity MSBuild runner配置的用户友好性,但如果它起作用,我愿意做出妥协

注意-我们正在运行TeamCity 7-我不确定在更高版本中是否已解决此问题。

我发现您可以在生成配置上设置一个名为“system.SqlTargetName”的名称以覆盖默认值


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

我知道我决定使用SQLPackage是因为它更容易一些,但实际上没有尝试使用msbuild发布,因为我们停止使用DBProj文件以支持sqlproj。您说在从命令行运行命令时没有错误,但它是否真的发布了更改?如果是这样,我认为您可能在文件路径或权限方面有问题。也许在单独的步骤中构建和发布会有所帮助?已经在单独的步骤中进行了。我在工作文件夹和数据库中有checekd permissons-一切正常。如果您将msbuild切换为SQLPackage to publish选项,会发生什么情况?感谢您与我一起思考,Peter,SQLPackage第一次工作,因此我将使用它,直到解决此问题。我们有一个相关问题。在本例中,我们可以使用sqlpackage.exe发布。当我们通过MSBuild使用TeamCity进行构建时,它会输出名为MyProject.sqlproj.dacpac的文件。更糟糕的是,如果这个文件放在构建服务器上,另一个构建运行,它似乎会像我们预期的那样保存MyProject.dacpac。看起来它可能会选择以前的MyProject.sqlproj.dacpac,并在生成新的MyProject.sqlproj.dacpac之前将其重命名为MyProj.dacpac。你知道这件事的真相吗?