C#编译报错CS1056:意外字符'$'的原因及解决方法
问题原因及解决办法
错误原因
CS1056错误提示意外字符$,是因为代码中使用了C# 6.0引入的字符串插值语法,而当前MSBuild构建过程调用的C#编译器版本不支持该特性。旧版本C#编译器(对应C# 5.0及更早)无法识别$开头的字符串插值语法。
解决办法
1. 明确设置项目的C#语言版本
在你的.csproj文件中添加或修改LangVersion属性,指定支持字符串插值的版本(6.0及以上):
<PropertyGroup> <!-- 可根据需求设置为6、7.3、latest等 --> <LangVersion>6</LangVersion> </PropertyGroup>
2. 确保使用兼容的MSBuild版本
C# 6.0对应Visual Studio 2015及后续版本的MSBuild(版本号14.0及以上)。在命令行执行以下命令确认当前MSBuild版本:
msbuild -version
若版本低于14.0,需切换到对应Visual Studio版本的MSBuild路径,例如:
- Visual Studio 2015:
C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild.exe - Visual Studio 2022:
C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\msbuild.exe
3. 确认编译器路径正确
如果直接调用csc.exe编译,需确保使用Roslyn编译器(支持C# 6+),而非.NET Framework旧版本目录下的csc.exe。正确的Roslyn编译器路径通常在Visual Studio安装目录的Roslyn文件夹中,例如:
C:\Program Files (x86)\Microsoft Visual Studio\2022\Community\BuildTools\bin\Roslyn\csc.exe
内容的提问来源于stack exchange,提问作者Gerhard
相关产品推荐
相关产品推荐

