检查要包含在解决方案生成中的生成错误,以便在 sql 文件中出现任何错误时生成失败

Checking Build Errors to be included in a solution build so that if there is any error in sql file the build fails

提问人:kgz 提问时间:10/26/2023 更新时间:10/27/2023 访问量:29

问:

我有一个 c# 项目,它是一个控制台应用程序,它使用 DbUp 将脚本运行到 sql 服务器数据库,如果 .sql 文件中有任何语法问题,有没有办法停止构建过程

我尝试了几种方法,更改项目文件以通过 MS build 进行更改,但没有成功

C# SQL .NET 可视化工作室 MSBuild

评论

1赞 MakePeaceGreatAgain 10/26/2023
这取决于您如何调用该脚本。它是否提供任何退出代码?
0赞 Jonathan Dodds 10/26/2023
是否使用 MSBuild 中的 Exec 任务来运行控制台应用,并且控制台应用正在使用 DbUp?
0赞 Bowman Zhu-MSFT 10/27/2023
你可以看看我的答案,sqlcmd 有一个参数 -b,它可以阻止批处理并在遇到问题时退出。在构建步骤之前设置验证步骤,可以满足所需的要求。:)

答:

0赞 Bowman Zhu-MSFT 10/27/2023 #1

是的,您可以在构建项目之前检查脚本是否有效。

就像这样:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

  <!--This is the key part-->
  <Target Name="PreBuild" BeforeTargets="PreBuildEvent">
    <Exec Command="xxx" />
  </Target>
  <!--This is the key part-->

</Project>

将命令 xxx 替换为验证脚本。

例如:

sqlcmd -S xxx -d xxx -U your_username -P your_password -i "xxx" -b

Sqlcmd 实用工具的官方文档

如果在这种情况下出现错误,-b 将终止批处理作业。