在 Visual Studio 中为 SQL 字符串着色

本文关键字:字符串 SQL 中为 Visual Studio | 更新日期: 2023-09-27 18:37:26

如何在Visual Studio中的C#项目中获取SQL字符串的代码着色?作为奖励,添加语法检查和智能感知?

尽管花了一些时间在网上搜索,但我找不到任何方法可以做到这一点,也不确定下一步该去哪里。

注意:这个问题不是在寻找"首选"或"最佳",也不是寻求人们对他们喜欢如何做的意见,而是寻求任何实现上述具体目标的方法。

我的疯狂想法是:

  • 创建一种实际上是 C# 的新语言,但有足够的差异以某种方式支持内联 SQL(不在双引号内)。
  • 制作一个Visual Studio插件(或以某种方式修改随行的VS代码),在某些时候设法使代码着色。

我知道实现我的目标在精力、时间、资源等方面可能非常昂贵。我从以下角度问,如果你有这些资源,有什么可能的方法可以获得代码着色?

用例是Dapper,如果有帮助的话。

在 Visual Studio 中为 SQL 字符串着色

已经有一个Visual Studio插件可以做到这一点。看看吧!

从他们的网站:

此 Visual Studio 2010 扩展将基本的 SQL 语法突出显示(关键字、函数和变量)添加到字符串文本。

此外,您可以获取源代码并根据需要对其进行自定义(包括添加特定的 Dapper 关键字)。

这个扩展为我完成了这项工作:

SQL 工具

它支持Visual Studio 2017和2019,与当前接受的答案不同。相比之下,这是一个非常简单的扩展,但它适用于我的PostgreSQL/Dapper项目。

我的解决方案是将查询放在*.sql文件中,然后按需加载它们。 我的加载器(有点)缩小了 SQL(删除单行注释(只要它在一行上///* comment */),然后删除前导和尾随空格以及空行)。 最后,它缓存缩小的 SQL。我在 SQL 中保留了行尾(为了可读性,成本很低)。

由于您正在编辑SQL文件,因此您将获得完整的语法着色等。 此外,您没有将SQL用作字符串(这往往会消除程序员使用内插字符串,字符串连接或...可能导致SQL注入的事情)。它还倾向于使您的SQL代码更容易找到(为任何DBA带来欢乐)。

由于缩小,它减少了服务器上所需的查询缓存空间。

我写的一个版本(我已经为几个雇主做过)包括一个SQL片段语法,所以我们可以将公共片段干净地插入到生成的SQL中(有点宏语言)。

缺点是你最终将SQL文件部署到服务器 - 从安全的角度来看,这可能是不可取的。