嵌套在 MSBuild 中的 SQL 不会导致 TeamCity 构建失败

Nested SQL in MSBuild not failing TeamCity build

我运行正在使用 TeamCity 9 中的 MSBuild 构建 运行ner 作为构建过程的一部分。

在一些 MSBuild 文件中,我通过 MSBuild.ExtensionPack.SqlServer 命名空间 运行 嵌套 SQL。 如果在 运行 编译 SQL 代码时发生错误,MSBuild 目标不会 return TeamCity 构建出错,因此总体构建状态是成功的,没有记录任何错误。

我如何准确地将 return 从 SQL 到 MSBuild 的错误发送给 运行 的 TeamCity 构建失败?

这里是示例代码,在 SQL 代码中有一个故意的错误,当 运行:

时,此代码不会 return 构建错误
<Target Name="RunSQL">
    <MSBuild.ExtensionPack.SqlServer.SqlCmd
        TaskAction="Execute"
        CommandLineQuery="EXEC [Database1].dbo].[UpdateSomething]" />
</Target>

我在 SeverityLevel 属性 中找到了 SqlCmd class

中的解决方案

将此 SeverityLevel 属性 设置为 1 会将所有错误发送到 MSBuild 任务,最终导致 运行 TeamCity 构建失败。

我的最终代码如下所示

<Target Name="RunSQL">
    <MSBuild.ExtensionPack.SqlServer.SqlCmd
    TaskAction="Execute"
    SeverityLevel="1"
    CommandLineQuery="EXEC [Database1].dbo].[UpdateSomething]" />
</Target>

解决方案来自: http://www.msbuildextensionpack.com/help/4.0.9.0/html/3b72c130-7fc9-8b8a-132c-62999e5b1183.htm