功能“内插字符串”在 C# 5 中不可用。请使用6或更高的语言版本。
出现这个问题是因为项目的编译器以低版本的C#语言编译就会导致高级用法(语法)不可用,所以要手动指定高级语言版本,不过突然出现这问题很有可能是之前手动改了web.config,注释了节点<system.codedom>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701" />
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+" />
</compilers>
</system.codedom>
解决办法就是重新启用上面这个节点<system.codedom>
如果还出现编译器报语法错误,则参考下面的步骤解决:
下表显示当前所有 C# 语言版本。 如果编译器较旧,它可能不一定能识别每个值。 如果安装的是 .NET Core 3.0 或更高版本,则可以访问列出的所有内容。
“值” | 含义 |
---|---|
preview | 编译器接受最新预览版中的所有有效语言语法。 |
latest | 编译器接受最新发布的编译器版本(包括次要版本)中的语法。 |
latestMajor | 编译器接受最新发布的编译器主要版本中的语法。 |
8.0 | 编译器只接受 C# 8.0 或更低版本中所含的语法。 |
7.3 | 编译器只接受 C# 7.3 或更低版本中所含的语法。 |
7.2 | 编译器只接受 C# 7.2 或更低版本中所含的语法。 |
7.1 | 编译器只接受 C# 7.1 或更低版本中所含的语法。 |
7 | 编译器只接受 C# 7.0 或更低版本中所含的语法。 |
6 | 编译器只接受 C# 6.0 或更低版本中所含的语法。 |
5 | 编译器只接受 C# 5.0 或更低版本中所含的语法。 |
4 | 编译器只接受 C# 4.0 或更低版本中所含的语法。 |
3 | 编译器只接受 C# 3.0 或更低版本中所含的语法。 |
ISO-2 | 编译器只接受 ISO/IEC 23270:2006 C# (2.0) 中所含的语法。 |
ISO-1 | 编译器只接受 ISO/IEC 23270:2003 C# (1.0/1.2) 中所含的语法。 |
如果必须明确指定 C# 版本,可以通过以下几种方式实现:
*手动编辑项目文件。
*为子目录中的多个项目设置语言版本。
*配置 -langversion 编译器选项。
编辑项目文件.csproj,添加如下节点
<PropertyGroup>
<LangVersion>preview</LangVersion>
</PropertyGroup>
参考微软文档解决:
https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/configure-language-version