Msbuild 在TeamCity 7构建服务器上构建*.sqlproj SSDT项目时,*.dacpac文件的文件命名不稳定

Msbuild 在TeamCity 7构建服务器上构建*.sqlproj SSDT项目时,*.dacpac文件的文件命名不稳定,msbuild,teamcity,sql-server-data-tools,Msbuild,Teamcity,Sql Server Data Tools,我们有一个构建*.sqlproj文件的MSBuild任务,该文件的输出作为工件加载回TeamCity,以供后续部署 与此用户类似,我们遇到了一些不可预测的输出文件命名问题: 有时,它会在/bin/Release下生成此输出文件: MyProj.sqlproj.dacpac 然后,后续生成将在同一文件夹中生成此文件: MyProj.dacpac 我们还没有做深入测试-我想知道是否有其他人见过类似的情况,或者有建议的故障排除方法 要明确的是,这是同一个任务,对同一个项目运行同一个命令-只要在新

我们有一个构建*.sqlproj文件的MSBuild任务,该文件的输出作为工件加载回TeamCity,以供后续部署

与此用户类似,我们遇到了一些不可预测的输出文件命名问题:

有时,它会在/bin/Release下生成此输出文件:

MyProj.sqlproj.dacpac
然后,后续生成将在同一文件夹中生成此文件:

MyProj.dacpac
我们还没有做深入测试-我想知道是否有其他人见过类似的情况,或者有建议的故障排除方法


要明确的是,这是同一个任务,对同一个项目运行同一个命令-只要在新签入发生时重复超时运行即可。

听起来您签入了冲突的.sqlproj文件


我先检查一下历史记录

好的,在仔细查看构建日志后,我可以看到TeamCity MSBuild运行程序似乎正在创建一些临时虚拟项目文件(或其他,我不确定,因为它们被删除了),其名称如下:

MyProj.sqlproj.teamcity
我推测这可能会混淆MSBuild或与构建DACPAC相关的目标之一,因此我将TeamCity MSBuild构建步骤替换为在原始项目文件本身上调用MSBuild的命令行构建步骤,这似乎解决了问题。它现在生成带有我期望的文件的dacpac

我现在没有时间进一步挖掘,但我可以相信,链中的某个地方存在某种逻辑,从所使用的项目文件的名称派生出最终*.dacpac的名称。我猜它只是去掉了最后一个“.”之后的所有内容,并附加了“.dacpac”后缀


我不完全知道为什么它偶尔会创建一个具有正确名称的*.dacpac文件,但我有时会从构建服务器本身的命令行在TeamCity agent工作文件夹中进行手动构建,因此这可能只是以前执行的遗留文件。

我怀疑自己,并检查了.sqlproj文件的更改历史记录。有很多合法的更改(例如,向项目添加新对象),但似乎无法控制最终*.dacpac的名称。不同的生成代理运行不同版本的MsBuild。我看到了v15和v16之间的差异。