如何在没有明确编译的情况下让Visual Studio错误检查我的代码(显示波形)?

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

是否有一个我可以改变的设置,以便VS每次保存时都会构建,或者甚至在我打字的时候? 这对C#来说难以处理,因为它在某些方面比Java更复杂吗? 我是否需要找人向我购买完整(非快递)版本? 另外,什么是波浪线下划线function? 我担心之前可能会问过这个问题,但我不知道要搜索的神奇词汇。

你有Visual C#2008 Express Edition SP1吗? SP1在Visual Studio 2008 Professional和Visual C#2008 Express Edition中添加了此function。

从发行说明 :

此Service Pack添加了一个新的Visual C#IDEfunction,该function提供了有关代码的更丰富的错误信息。 具体来说,此function根据您的代码显示打开文件中出现的表达式级别错误。 之前仅在构建操作之后报告了这些表达式级别错误。

来自Scott Guthrie的发行说明 :

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

替代文字

杰森的答案很好,但还有几点:

这对C#来说很难吗,因为它在某些方面比Java更复杂?

是的,但那不相关。 是的,在按键之间的100毫秒内对任何语言进行即时分析是一个难题。 为C#做它可能比Java更难,因为它支持比Java更多的语言function。

但是我们的IDE团队是一群非常棒的buff编码器,所以他们可以为C#做这件事。

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

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

什么是波浪线下划线function?

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

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

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

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

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