如何将Unity项目中C#版本从9.0升级至11.0?
如何在Unity项目中设置C# 11.0以使用
required关键字 问题背景
你尝试在代码中使用C# 11.0的required关键字,却收到版本要求报错。你的代码如下:
using Microsoft.Build.Framework; using System.Collections.Generic; public class BackendClient { public required string url { get; set; } public string appId; public string deviceId; public BackendClient(string url, string appId, string deviceId) { this.url = url; this.appId = appId; this.deviceId = deviceId; } public List<Category> getCategories() { return null; } }
当前环境:
- Visual Studio 17.7.2
- .NET Framework 4.8.09032
- Unity项目中Assembly-CSharp的C#版本默认被设为9.0:
<PropertyGroup> <LangVersion>9.0</LangVersion> </PropertyGroup>
你曾手动修改为preview或直接指定版本,但启动Unity后设置会自动恢复为9.0。
解决方法
直接修改.csproj文件无效,因为Unity会根据自身项目设置重新生成这些文件。需要通过Unity编辑器的设置来更改C#版本:
- 打开Unity编辑器,点击顶部菜单 Edit > Project Settings
- 在弹出的设置窗口中,选择Player选项卡,滚动到Other Settings面板
- 确认Scripting Runtime Version设置为
.NET 4.x Equivalent(这是支持C#11的前提) - 在Configuration区域找到C# Language Version,选择11.0
- 若找不到该选项,说明你的Unity版本不支持C#11,需要升级到Unity 2022.3 LTS或更高版本(Unity从2022.3开始正式支持C#11)
- 保存设置,Unity会自动重新生成项目的
.csproj文件,此时Visual Studio中的C#版本将保持为11.0
补充说明
- .NET Framework 4.8本身支持C#11的大部分特性,但需要Unity的脚本编译链支持,所以必须确保Unity版本符合要求
- 不要手动修改Unity生成的
.csproj文件,任何修改都会被Unity的项目设置覆盖
内容的提问来源于stack exchange,提问作者user21403547
相关产品推荐
相关产品推荐

