TeamCity/.sqlproj 通过 MSBuild 构建——失败
Posted
技术标签:
【中文标题】TeamCity/.sqlproj 通过 MSBuild 构建——失败【英文标题】:TeamCity/.sqlproj build via MSBuild -- FAILED 【发布时间】:2017-07-26 09:37:32 【问题描述】:这一切都始于 TC 中的 VS2017 runner 类型。它失败了,没有任何错误或提示(解决方案级别的(default targets) -- FAILED.
消息除外)。我将其范围缩小到 .sqlprojects。这些不是通过 MSBuild 构建的,它们确实在构建代理上的 VS2017 中完美编译。
我把它归咎于 SSDT……但我想我检查了一切。这是在 TC 构建中上升到解决方案级别的问题:
我注意到,对于 VS2017,SSDT 带有 VS 设置。 “工作负载”“数据存储和处理”已安装,“单个组件”下的“SQL Server Data Tools”也已安装。 我在https://docs.microsoft.com/EN-US/sql/ssdt/download-sql-server-data-tools-ssdt 上注意到“如果您在 Visual Studio 2017 中使用 SSDT,请安装 AS 和 RS 组件”这句话。做到了。没有改变。 SSDT 也为以前的版本单独安装。
这个stack 是相关的,但对我没有帮助。
还有其他想法吗?
我更进一步。除了 VS,构建工具也安装在构建代理上,TeamCity 的 VS2017 运行器显然使用构建工具中的 MSBuild。 正如您在上面看到的,我也从 Build Tools 中重现了 MSBuild 的问题。 如果我选择 VS2017 的 MSBuild“版本”,它就像一个魅力(就像它在 VS 中一样)。 简而言之:
不工作
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin
作品
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin
【问题讨论】:
【参考方案1】:我从Lukie Briner 找到了一篇博文,他的最后一段为我指出了解决方案(谢谢哥们!)。
仍然不知道为什么/如何会发生这种情况,可能与构建工具、SSDT、Visual Studio 等的安装顺序有关?
原因:构建工具及其版本的 MSBuild 中缺少 SSDT。
我做了什么:
从
复制SSDT
文件夹
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\VisualStudio\v15.0
到
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0
.
哇!我终于看到了真正的错误消息:
现在我不得不从
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\Extensions\Microsoft
到
C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\Extensions\Microsoft
然后砰……
是的,TeamCity 的 VS2017 跑步者也很满意。
【讨论】:
【参考方案2】:似乎构建工具和 SSDT 的问题现在已经解决,您不必再手动复制目标目录(Visual Studio Build Tools 2017 v15.9.8)。
-
只需打开安装在构建代理服务器上的 Visual Studio
修改构建工具安装
选择安装“数据存储和处理工具”
修改
构建现在应该可以工作了。
【讨论】:
以上是关于TeamCity/.sqlproj 通过 MSBuild 构建——失败的主要内容,如果未能解决你的问题,请参考以下文章
将 pdb 文件包含到我的 nuget (nupkg) 文件中
Docs-VisualStudio-MSBuild-MSBuild参考:MSBuild 保留属性和已知属性
如何只用visual c++编译器而不安装visual studio
绑定: 通过 Binding 绑定对象, 通过 x:Bind 绑定对象, 通过 Binding 绑定集合, 通过 x:Bind 绑定集合