使用csc命令行编译器编译C#代码时无法识别Range类型的问题
解决csc编译时找不到System.Range的问题
核心原因
虽然你的编译器支持C# 8.0,但默认编译时可能未启用C# 8.0及以上的语言版本,或者目标框架未正确引用包含Range定义的程序集。
解决方案
1. 显式指定C#语言版本
csc默认的语言版本可能低于8.0(例如针对.NET Framework时默认是C# 7.3),编译时添加/langversion参数指定版本:
csc /langversion:8.0 a.cs
也可以直接使用latest自动启用编译器支持的最高版本:
csc /langversion:latest a.cs
2. 补充程序集引用(若仍报错)
如果指定语言版本后依然找不到Range,需根据目标框架补充引用对应的程序集:
- 针对.NET Framework 4.8:显式引用
System.Runtime.dllcsc /langversion:8.0 /r:System.Runtime.dll a.cs - 针对.NET Core/.NET 5+:建议使用
dotnet build命令自动处理依赖;若坚持用csc,需引用对应框架版本的System.Runtime.dll(路径根据你的安装版本调整):csc /langversion:8.0 /r:"C:\Program Files\dotnet\shared\Microsoft.NETCore.App\6.0.25\System.Runtime.dll" a.cs
验证语言版本
可以在代码中添加以下行,编译时会输出当前使用的语言版本,确认是否启用了8.0:
#error version
内容的提问来源于stack exchange,提问作者rwallace
相关产品推荐
相关产品推荐

