Godot C#项目升级至C#10/.NET6后编译遇System.TypeLoadException求助
针对你遇到的程序集不同步导致的类型加载错误,试试以下几个针对性的解决方法:
检查Godot与项目的.NET版本匹配
打开Godot编辑器的项目设置 > 常规 > .NET,确认"Runtime version"设置为.NET 6。如果当前是其他版本,切换后重启Godot,确保编辑器运行时和项目目标框架一致。重新生成Godot项目配置文件
在Godot中执行项目 > 工具 > C# > 重新生成项目文件,让Godot重新生成适配.NET 6的.csproj和解决方案文件,彻底清除旧版本的配置残留。修正Utilities包的目标框架
打开Utilities项目的.csproj文件,确认<TargetFramework>节点的值为net6.0,和主项目保持一致。同时检查System.Runtime的依赖版本,确保和Godot内置的版本兼容,之后重新编译Utilities包。清理Godot全局程序集缓存
除了删除项目的obj、bin文件夹,还需要清理Godot的全局缓存:- Windows:
%APPDATA%\Godot\mono\cache - macOS:
~/Library/Application Support/Godot/mono/cache - Linux:
~/.local/share/godot/mono/cache
删除该目录下的所有文件,重启Godot后重新构建项目。
- Windows:
确认程序集引用的正确性
如果Utilities是本地项目,检查主项目的.csproj,确保引用的是项目而非编译后的dll,即使用<ProjectReference Include="..\Utilities\Utilities.csproj" />格式;如果是NuGet包,卸载后重新安装适配.NET 6的版本。启用详细日志定位问题
打开编辑 > 编辑器设置 > 导出 > C#,勾选"详细构建日志",重新构建项目后查看日志,获取类型加载失败的具体细节(如缺失类型的全名、依赖链问题),进一步排查根因。
内容的提问来源于stack exchange,提问作者BetterLifeR

