2017-08-31 103 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#(官方)'語法發生的事情 –