如何在不显式编译的情况下让 Visual Studio 错误检查我的代码(显示曲线)?

Posted

技术标签:

【中文标题】如何在不显式编译的情况下让 Visual Studio 错误检查我的代码(显示曲线)?【英文标题】:How can I get Visual Studio to error check my code (show the squiggles) without explicitly compiling? 【发布时间】:2010-01-20 18:38:33 【问题描述】:

我偶尔会使用 Visual Studio (C# Express 2008) 来处理一些供应商提供的 C# 代码。我希望让我对 VS 的体验更像我对 Eclipse 的体验。我已经习惯了 Eclipse 处理下划线错误的方式(在 java 源代码中)。当我在 Eclipse 中的代码中出现错误时,它会立即带有下划线,如果我修复它,下划线将几乎立即消失,或者最坏的情况是,当我保存文件时。然而,在 Visual Studio 中,下划线一直存在,直到我下一次构建项目。

是否有一个我可以更改的设置,以便在我每次保存时构建 VS,甚至在我输入时构建?用 C# 很难做到这一点,因为它在某些方面比 Java 更复杂吗?我需要找人给我买完整(非快递)版本吗?另外,波浪线下划线功能叫什么?我担心这个问题可能以前被问过,但我不知道要搜索的神奇词。

【问题讨论】:

【参考方案1】:

Jason 的回答很好,但要补充几点:

C# 很难做到这一点,因为它在某些方面比 Java 更复杂?

是的,但这不相关。是的,在击键之间的 100 毫秒内对任何语言进行动态分析是一个难题。为 C# 做这件事可能比 Java 更难,因为它支持的语言特性比 Java 多得多。

但是我们的 IDE 团队是一群非常棒的爱好者,所以他们可以处理 C# 代码。

真正的问题是,C# 的编译器架构最初并不是为了实时进行这种分析而设计的。 VB编译器是。因此,修复 C# 编译器的语义分析引擎以使该功能可行需要更长的时间。

我们正在继续研究如何重新架构编译器,以一种丰富、可扩展和引人注目的方式公开越来越多的这些动态分析服务,但这需要一些时间。这是一个很大的编译器。

波浪线下划线功能叫什么?

在编译器团队中,我们将其称为“波浪形红色下划线功能”,或简称为“波浪形”。

我不知道市场营销是否有名称。如果他们这样做,它可能类似于“Microsoft SquiggleSense .NET For The Microsoft Visual Studio Suite System 2008”;他们似乎喜欢这些在其中包含两次“Microsoft”的长名称。

【讨论】:

现在是 2015 年,令人惊讶的是 VB.NET 版本仍然如此出色。当我从 VB 切换到 C# 时,我认为我的安装被破坏了。我希望它能赶上。我们很幸运拥有这一切。为微软干杯【参考方案2】:

您是否有带有 SP1 的 Visual C# 2008 Express Edition? SP1 正是将此功能添加到 Visual Studio 2008 Professional 和 Visual C# 2008 Express Edition。

来自release notes:

此服务包添加了一个新的 Visual C# IDE 功能,该功能提供了一组更丰富的有关您的代码的错误信息。具体来说,此功能会根据您的代码向您呈现打开文件中出现的表达式级错误。这些表达式级别的错误之前仅在构建操作之后才报告。

来自 Scott Guthrie 的release notes:

C# 代码编辑器现在可以识别并显示许多以前需要显式编译才能识别的语义代码问题的红色曲线错误。例如,如果您今天尝试在 C# 代码编辑器中声明和使用未知类型,则在进行构建之前您不会看到编译错误。现在使用 SP1,您将立即看到实时红色曲线错误(无需显式编译):

【讨论】:

优秀。看起来发行说明甚至没有花哨的名字。相反,他们称之为“功能”。 终于有机会安装新版本了,这是我梦寐以求的一切。【参考方案3】:

要在 VS 2010 中打开此选项,请使用工具 > 选项 > 文本编辑器 > C# > 高级 > 显示实时语义错误 和

VS 2010 使用工具 > 选项 > 文本编辑器 > C# > 高级 >打开文件时进入大纲模式

【讨论】:

在 VS 2012 中的 Tools > Options > Text Editor > C# > Advanced 中,我必须检查“编辑器中的下划线错误”和“显示实时语义错误”。感谢 Heera 让我靠近。【参考方案4】:

要在 VS 2010 中打开此选项,请使用 Tools > Options > Text Editor > C# > Advanced > Show live semantic errors

【讨论】:

以上是关于如何在不显式编译的情况下让 Visual Studio 错误检查我的代码(显示曲线)?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不显式导入的情况下使新的装饰器在类中可用?

数组适配器中的 get count() 如何在不显式返回数组大小的情况下返回值?

使用 Excel 是不是可以在不显式生成表格数据但仅使用公式的情况下绘制图表?

如果通过 spark-submit 提交作业,我们可以在不显式创建的情况下使用 spark 会话对象吗

我可以在不显式调用 headObject 的情况下从 S3 对象流中获取 Content-Type 吗?

如何在不冻结整个线程的情况下让函数等待