XmlPreloadedResolver上的Mono TypeLoadException

时间:2016-03-09 18:31:01

标签: c# linux ubuntu mono monodevelop

我正致力于使用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-completesudo 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在测试计算机上安装monodevelop,我尝试通过运行

从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已经实施并稳定了很长时间......

1 个答案:

答案 0 :(得分:0)

因此,事实证明这基本上只是一个操作顺序问题。

我在添加Xamarin Feed之前已经安装了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