2017-08-31 777 views
2

使用“Visual Studio Code 1.15.1”;VS Code C#语法高亮错误

我一直在我的Mac上使用VSCode来查看我在其他地方写过的一些C#代码,出于某种原因,某些事情没有正确突出显示。

(0)await与变量而不是方法调用或成员访问器一起使用时,语句未正确突出显示。

await someTask; // highlighted as if someTask were a variable of type await 
await someThing.SomeTask; // highlighted correctly 
await someThing.DoSomething(); // highlighted correctly 

(1)就好像它是一个函数,而不是关键字using被突出显示。

using (var spoon = new DisposableSpoon()) { 
    // ... 
} 

之前没有发生过。 (2)某些C#7功能未正确突出显示,如out变量。

if (map.TryGetValue(key, out TValue val)) { 
    // ... 
} 

我使用的是默认主题(黑+),我不认为我有任何启用大,工作区破插件(大部分只是额外的主题或其他语言的支持)。我是否意外地搞乱了一个配置或者什么,或者这是一个错误?

编辑:(1)当我将语言从“C#”更改为“C#(官方)”时,它是固定的。似乎有多个C#出于某种原因,但似乎没有解决所有上述错误。如果这只是由于一个不可靠的配置或什么的,我将如何恢复到默认?

+0

eh,'out'不是C#7功能,它已经成为很长一段时间的语言的一部分。 – BurnsBA

+1

我的意思是在同一位置声明一个变量作为输出参数,如上所示 –

回答

2

等待问题看起来像是我们的内置c#语法中的一个错误。我已经用我们用来跟踪这个语法的文法开了一个问题:https://github.com/dotnet/csharp-tmLanguage/issues/83

我只能回购(1)当不在类或方法体内时,我不能回购(2)。你能否为这些文件提出问题?包括代码,屏幕截图以及看起来不正确的简短说明:https://github.com/dotnet/csharp-tmLanguage/issues/new

+0

好的,我明天将提出一个问题。但是,为了确保扩展能够以某种方式混淆默认tmL语言或其他内容?如果你不能复制它,那么后两者可能就是我的最终目标。 –

+0

更新:安装1.16.0-Insider后,我不再看到(1)和(2)。虽然这不是主要的构建,但这两个可能只是我。 –

+0

是的,扩展可以覆盖语言的内置语法。这可能是你用'c#(官方)'语法发生的事情 –