Ubuntu 17.04下MonoDevelop中C#项目多个引用未安装求助
嘿,我之前在Ubuntu 17.04上折腾MonoDevelop的时候也碰到过几乎一模一样的问题——旧项目要么崩溃要么一堆GTK相关引用标红,给你几个亲测有效的解决步骤:
补全Mono和GTK#核心依赖
你看到的atk-sharp、gtk-sharp这些都是GTK#的核心组件,Ubuntu默认可能没装全。打开终端跑这两条命令:sudo apt-get update sudo apt-get install mono-complete gtk-sharp2 gtk-sharp3mono-complete会把Mono的所有核心组件一次性装全,避免漏装;gtk-sharp2和gtk-sharp3覆盖了新旧版本的GTK绑定,你的旧项目大概率用的是2.x版本,装完后系统里就有这些引用对应的dll了。重置MonoDevelop的引用缓存
有时候MonoDevelop会因为缓存没更新,识别不到刚装的依赖。先彻底关掉MonoDevelop,然后在终端执行:rm -rf ~/.local/share/MonoDevelop/*这个命令会删除MonoDevelop的本地缓存,重启软件后它会重新扫描系统里的所有可用引用,很多时候标红的问题就直接消失了。
手动添加缺失的引用(备用方案)
如果上面两步没解决,就手动补引用:打开项目后右键点击「引用」→「添加引用」,在弹出窗口的.NET或Mono标签里找对应的组件(比如gtk-sharp、glib-sharp),选中添加即可。要是列表里找不到,就点「浏览」,手动定位到dll的安装路径:- GTK# 2.x的dll一般在
/usr/lib/mono/gtk-sharp-2.0/ - GTK# 3.x的dll在
/usr/lib/mono/gtk-sharp-3.0/
找到对应dll选中添加就行。
- GTK# 2.x的dll一般在
检查项目的目标框架版本
旧项目可能是基于旧版Mono创建的,和Ubuntu 17.04里的Mono版本不匹配。右键项目→「选项」→「构建」→「通用」,把「目标框架」改成当前系统安装的Mono版本(Ubuntu 17.04默认是Mono 4.8.0),或者对应的.NET Framework版本(比如4.5),这样能避免版本兼容导致的引用问题。
另外,之前的崩溃问题大概率也是依赖不全或版本不兼容导致的,上面的步骤应该能一并解决。如果还是有问题,可以试试彻底重装MonoDevelop:sudo apt-get remove --purge monodevelop && sudo apt-get install monodevelop。
内容的提问来源于stack exchange,提问作者DinghySailor

