我正在使用 Mono 将 Windows 控制台应用程序移植到 Linux。在我的开发机器 (Ubuntu) 上,该应用程序运行得非常好,但是当我在我的测试机器上尝试它时(一个普通的 Ubuntu 14.04 桌面安装),我收到以下错误:
Unhandled Exception:
System.TypeLoadException: Could not load type 'System.Xml.Resolvers.XmlPreloadedResolver' from assembly 'System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
我为“准备”测试机所做的唯一一件事是运行 sudo apt-get install mono-complete
和 sudo apt-get upgrade
。当我运行 dpkg --list | grep mono-system-xml
在测试机上我看到了这个:
$ dpkg --list | grep mono-system-xml
ii libmono-system-xml-linq4.0-cil 3.2.8+dfsg-4ubuntu1.1 all Mono System.Xml.Linq library (for CLI 4.0)
ii libmono-system-xml-serialization4.0-cil 3.2.8+dfsg-4ubuntu1.1 all Mono System.Xml.Serialization library (for CLI 4.0)
ii libmono-system-xml4.0-cil
而在我的开发机器上我看到了这个:
$ dpkg --list | grep mono-system-xml
ii libmono-system-xml-linq4.0-cil 4.2.1.102-0xamarin1 all Mono System.Xml.Linq library (for CLI 4.0)
ii libmono-system-xml-serialization4.0-cil 4.2.1.102-0xamarin1 all Mono System.Xml.Serialization library (for CLI 4.0)
ii libmono-system-xml4.0-cil 4.2.1.102-0xamarin1 all Mono System.Xml library (for CLI 4.0)
我不确定版本不匹配是否是根本问题,但这是我现在必须继续做的所有事情。我尝试通过 sudo apt-get install monodevelop
在测试机器上安装 modevelop,我尝试通过运行从 xamarin 服务器升级
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
sudo apt-get update
没有用。有没有办法告诉我开发机器上的 4.2.1 版本来自哪里?假设这是不同的,为什么这个模块会在标准发行版中被破坏?来自mono docs它已经实现并稳定了很长时间......
最佳答案
所以,事实证明这基本上只是一个操作顺序问题。
我在添加 Xamarin 提要之前安装了 mono-complete
,所以我得到了 Ubuntu 14 附带的旧的损坏的 3.8 版本的 Mono,而不是最新最好的。无论出于何种原因,之后添加 feed 并执行 apt-get upgrade
都不会获取更新的版本,因此您要么必须重新开始并按正确的顺序执行操作,要么添加 feed ,查看 apt-cache showpkg mono-complete
的输出以确定你真正想要的版本,然后像 sudo apt-get install mono-complete=4.2.2.30-0xamarin2 这样指定它
。
关于c# - XmlPreloadedResolver 上的 Mono TypeLoadException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35899733/