.NET 兼容性
.NET 兼容性
Fern 生成的 .NET SDK 支持现代 .NET 版本、.NET Framework 版本和 Unity。
由于这些 SDK 使用现代 C# 特性构建,即使在针对较旧的 .NET Framework 目标时,您也需要以下条件:
- 现代编译器(Visual Studio 2022 或 .NET SDK)
- 相应的 .NET Framework 开发者包或引用程序集
支持的框架
Fern .NET SDK 支持所有官方支持的 .NET 版本,除了 net35。
C# 语言版本由您的编译器决定,而目标框架决定可用的运行时和基类库 API。Fern SDK 使用现代 C# 特性,但编译为较旧的框架版本。
IDE 兼容性
所有主要 IDE 在针对 net462、net472 和 net48 版本时都支持 Fern 生成的 SDK:
- Visual Studio 2022(推荐)- 开箱即用。在项目中设置
<LangVersion>并安装相应的开发者包。 - Visual Studio 2019 - 原生支持 C# 9。对于更新的 C# 版本,添加
Microsoft.Net.Compilers.Toolset包。 - Rider - 使用 Roslyn。设置
<LangVersion>并确保引用程序集可用。 - VS Code - 通过 OmniSharp 和 .NET SDK 构建工作。
- Unity - 使用 Unity 自己的 C# 编译器。请参阅在 Unity 中使用 SDK。
您可以通过 Microsoft.Net.Compilers.Toolset 包在任何环境中”自带编译器”。
编译器兼容性
使用 Visual Studio 2022+ 或 .NET SDK 附带的 Roslyn 编译器(csc)。通过 <LangVersion> 设置您的 C# 版本为 latest、preview 或特定版本(最低 9)。
Fern 的 .NET SDK 不支持传统的 Mono 编译器(mcs、gmcs)或 Roslyn 之前的 csc.exe 编译器。即使在 Mono 上构建也请使用 Roslyn。
在 Mono 上构建
使用 .NET SDK(dotnet)与 Microsoft.NETFramework.ReferenceAssemblies 包在非 Windows 系统上提供 net48 引用。通过 dotnet build 或 Mono 的 MSBuild 使用 Roslyn。
在 Unity 中使用 SDK
Unity 控制自己的 C# 编译器和 .NET 配置文件,这会影响您如何使用 Fern 的 .NET SDK。
C# 语言版本
Unity 使用 Roslyn 编译项目,通常支持 C# 9(因 Unity 版本而异)。您无法通过更改包来强制 Unity 使用更新的 C# 编译器,因为 Unity 在编辑器内部控制编译器。
API 兼容性级别
在 Unity 中配置:Edit → Project Settings → Player → Other Settings → Api Compatibility Level
- .NET Standard 2.1(推荐用于跨平台插件)
- .NET Framework 4.x(Unity 的”4.x 等效”配置文件)
必需的程序集
Unity 不支持 NuGet 包,因此您必须手动下载这些程序集并将其添加到您的 Unity 项目:
项目配置示例
尽可能使用 SDK 样式项目,因为它们提供现代编译器和更简单的多目标支持。如果您有经典项目格式,请考虑转换为 SDK 样式。传统项目部分涵盖了无法转换的传统设置。
在 macOS/Linux 上构建
在 macOS/Linux 上为 net48 构建时,您不会有 Windows 目标包。添加引用程序集包:
这提供了 net48 引用程序集,以便 Roslyn 可以在任何平台上为 net48 编译。您仍然需要 Mono 或 Wine 来执行结果。
SDK 样式项目(推荐)
使用现代 C# 针对 net48
传统项目
对于较旧的 MSBuild/Visual Studio 版本、Visual Studio 2019 或传统的 packages.config 设置,添加现代 Roslyn 工具集并针对旧框架。
故障排除
找不到类型或命名空间 IsExternalInit
在您的项目中添加一个小垫片或引用一个辅助包。
找不到 .NETFramework,Version=v4.8 的引用程序集
- Windows:安装 .NET Framework 4.8 开发者包。
- 跨平台/CI:将
Microsoft.NETFramework.ReferenceAssemblies添加到项目中(作为PrivateAssets=all)。
VS 2019 无法解析较新的语法
将 Microsoft.Net.Compilers.Toolset 添加到项目中,或迁移到 VS 2022+。
CS0619:不支持具有必需成员的类型的构造函数
这个错误发生在较旧的 Visual Studio 版本中使用 required 关键字时。请按照传统项目的说明添加现代编译器。
某些版本的 Visual Studio 可能在 IDE 中显示此错误,但在使用包提供的编译器时成功编译项目。