c# - XmlPreloadedResolver 上的 Mono TypeLoadException

标签 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 在测试机器上安装 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/

相关文章:

c# - 将 List<Descendant> 转换为 List<Base> 的最简单方法

linux - 在 Linux shell 脚本中使用多个命令解释器

linux - 在汇编程序中打印 float

ubuntu - Ubuntu : index corruption & rebuild 上的 IntelliJ IDEA

c# - ASP.NET Core MVC 模型属性绑定(bind)为 null

c# - 在 Excel 功能区上,如何将按钮一直对齐到右侧?

c# - 自升级到 Visual Studio 2017 15.3.0 后,应用程序中出现奇怪的调试输出

Linux mkdir 创建带有序列号的目录

ubuntu - "Undefined reference to"使用g++和ncurses编译时

git - 将 git 存储库移动到 nfs 会导致权限错误