C#语法突出显示着色

C#语法突出显示着色,c#,visual-studio-code,colors,themes,syntax-highlighting,C#,Visual Studio Code,Colors,Themes,Syntax Highlighting,我可以像在Visual Studio中那样单独更改字段/局部变量的颜色吗? 以下是Visual Studio中的情况(字段变量赋值,读写为绿色,局部变量赋值,读写为白色): 但在VSCode中,局部变量和字段变量的作用域都是“variable.other.object.cs”和“variable.other.readwrite.cs”,从而导致: (玩家和动画都是绿色的) 我还想区分静态对象和动态对象,它们都有“variable.other.object.cs”作用域 在Visual Stu

我可以像在Visual Studio中那样单独更改字段/局部变量的颜色吗? 以下是Visual Studio中的情况(字段变量赋值,读写为绿色,局部变量赋值,读写为白色):

但在VSCode中,局部变量和字段变量的作用域都是“variable.other.object.cs”和“variable.other.readwrite.cs”,从而导致:

(玩家和动画都是绿色的)

我还想区分静态对象和动态对象,它们都有“variable.other.object.cs”作用域

在Visual Studio中,它将如下所示:

但在VSCode中看起来是这样的:

我能做些什么吗?
谢谢

为了实现您想要的,高亮显示者需要“理解”代码语义。VSCode中引入了语义突出显示,它对语言的支持仍然有限。C#highlighter背后的引擎OmniSharp开始支持以Roslyn为基础的语义作为基础

您首先需要选择加入以启用该功能,然后重新启动VSCode以使其生效

"csharp.semanticHighlighting.enabled": true,
我假设您知道如何调用范围检查器,但为了其他读者的利益,它位于
视图
命令托盘
开发者:检查编辑器标记和范围

现在有两个选项可以指定自定义高亮显示;使用最新可用的
语义标记
,或旧的
textMateRule
范围

语义标记也将为您提供一个修饰符(
static
,在本例中)

或者,如果您更喜欢使用
textMateRules
,我还不知道如何指定修饰符

"editor.tokenColorCustomizations": {
    "textMateRules": [
        {
            "scope": "entity.name.variable.field.cs",
            "settings": {
                "foreground": "#FF0000",
                "fontStyle": "italic",
            },
        },
    ]
},

嘿,谢谢!我确实在设置中添加了“csharp.semanticHighlighting.enabled”:true,但语义标记不会显示/更改任何内容。知道为什么吗?很有趣。也可以尝试显式启用
editor.semanticHighlighting.enabled
?(默认情况下应该为true,但谁知道呢…)此外,请确保vscode和C#扩展都是最新的。是的,所有内容都是最新的,并且我有“editor.semanticHighlighting.enabled”:settings.json中的true。还是没法用,那我就没主意了。它适用于我的所有3个环境。如果你有另一个系统,也许可以尝试一下,看看你是否能找出它们的不同之处?如果一切都失败了,也许可以试着向在场的人提出一个问题
"editor.tokenColorCustomizations": {
    "textMateRules": [
        {
            "scope": "entity.name.variable.field.cs",
            "settings": {
                "foreground": "#FF0000",
                "fontStyle": "italic",
            },
        },
    ]
},