Ubuntu 16.04下Rider构建C#项目遇「项目未找到」及空引用错误
解决Ubuntu 16.04上Mono + Rider构建C#项目的两类错误
Hey there, let's tackle those two errors you're facing with Mono and Rider on Ubuntu 16.04. I've dealt with similar issues before, so here's what you can try:
1. 处理「Project not found」错误
这个问题通常和项目加载路径、版本兼容性或者SDK配置有关:
- 确认项目文件路径正确性:检查Rider是否加载了正确的
.sln或.csproj文件。如果项目文件被移动过,或者导入时选错了路径,右键解决方案选择「Reload All Projects」,或者手动重新导入项目文件。 - 升级Mono到兼容版本:Ubuntu 16.04默认的Mono版本可能太旧,无法适配Rider的构建需求。先通过
mono --version查看当前版本,建议安装Mono 5.18及以上的稳定版。执行以下命令更新:sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF echo "deb https://download.mono-project.com/repo/ubuntu xenial main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list sudo apt update && sudo apt install mono-devel - 检查Rider的SDK配置:打开「File > Settings > Build, Execution, Deployment > SDKs」,确认已正确配置Mono SDK,并且项目的目标框架(比如.NET Framework 4.6)在当前Mono版本的支持范围内。
2. 处理空引用错误(Object reference not set to an instance...)
这个错误大多和MSBuild在Mono环境下的兼容性或项目配置问题相关:
- 清理缓存后重建:先删除项目根目录下的
bin和obj文件夹,然后在Rider中执行「Build > Clean Solution」,再重新构建。旧的编译缓存经常会导致MSBuild执行异常。 - 修复项目文件的无效配置:打开你的
.csproj文件,检查是否有缺失的引用、无效的属性或未定义的项。比如Windows特有的MSBuild属性在Linux下不兼容,需要注释或替换。例如,把<PlatformTarget>x86</PlatformTarget>改为<PlatformTarget>AnyCPU</PlatformTarget>。 - 安装适配的Rider版本:Ubuntu 16.04是比较旧的系统,确保你安装的Rider版本是支持它的稳定版(比如Rider 2020.3.x及以下,新版本已不再支持Ubuntu 16.04)。可以在Rider设置中检查更新,或手动下载适配版本。
- 用终端验证MSBuild:尝试在终端用Mono的MSBuild手动构建项目,命令为
msbuild YourProject.sln。如果终端也出现相同错误,说明问题出在Mono的MSBuild组件上,执行sudo apt install msbuild重新安装该包。
内容的提问来源于stack exchange,提问作者stianlagstad




