C# Mono上System.Xml.Linq出现问题

C# Mono上System.Xml.Linq出现问题,c#,.net,mono,linq-to-xml,raspbian,C#,.net,Mono,Linq To Xml,Raspbian,我正在构建一个针对.NET4.0的简单应用程序。这是一个POC,我正在使用VisualStudio2010构建它,并在Raspbian的Mono上运行它 我通过了Hello World阶段,现在我添加了一个第三方。应用程序在Windows中运行完全正常 因此,我将文件复制到Raspbian并运行mono SampleForm.exe。它不会运行并给出异常,所以我使用--debug标志运行它,调试日志的一部分显示如下内容。() Mono:加载程序集System.Xml.Linq v3.5.0.0的

我正在构建一个针对.NET4.0的简单应用程序。这是一个POC,我正在使用VisualStudio2010构建它,并在Raspbian的Mono上运行它

我通过了Hello World阶段,现在我添加了一个第三方。应用程序在Windows中运行完全正常

因此,我将文件复制到Raspbian并运行
mono SampleForm.exe
。它不会运行并给出异常,所以我使用
--debug
标志运行它,调试日志的一部分显示如下内容。()

Mono:加载程序集System.Xml.Linq v3.5.0.0的请求已重新映射到v4.0.0.0
Mono:程序集加载器探测位置:'/usr/lib/Mono/gac/System.Xml.Linq/4.0.0.0__b77a5c561934e089/System.Xml.Linq.dll'。
Mono:程序集加载程序探测位置:'/mnt/win/System.Xml.Linq.dll'。
Mono:程序集加载程序探测位置:'/usr/lib/System.Xml.Linq.dll'。
Mono:程序集加载程序探测位置:'/usr/lib/Mono/4.5/Facades/System.Xml.Linq.dll'。
Mono:程序集加载程序探测位置:'/usr/lib/Mono/gac/System.Xml.Linq/4.0.0.0__b77a5c561934e089/System.Xml.Linq.exe'。
Mono:程序集加载程序探测位置:'/mnt/win/System.Xml.Linq.exe'。
Mono:程序集加载程序探测位置:'/usr/lib/System.Xml.Linq.exe'。
Mono:程序集加载程序探测位置:'/usr/lib/Mono/4.5/Facades/System.Xml.Linq.exe'。
Mono:无法加载从/mnt/win/Matrix.dll引用的以下程序集:
程序集:System.Xml.Linq(assemblyref_index=1)
版本:3.5.0.0
公钥:b77a5c561934e089
在全局程序集缓存(MONO_path环境变量中列出的路径)或正在执行的程序集的位置(/mnt/win/)中找不到该程序集。
Mono:未能加载程序集矩阵[0x15c30b0]
Mono:无法加载文件或程序集“System.Xml.Linq,Version=3.5.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”或其依赖项之一。
Mono:无法加载文件或程序集“System.Xml.Linq,Version=3.5.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”或其依赖项之一。
Mono:无法加载文件或程序集“System.Xml.Linq,Version=3.5.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”或其依赖项之一。
Mono:无法加载文件或程序集“System.Xml.Linq,Version=3.5.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”或其依赖项之一。
Mono:无法加载文件或程序集“System.Xml.Linq,Version=3.5.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”或其依赖项之一。
System.TypeLoadException:无法从程序集“Matrix,Version=1.5.3.0,Culture=neutral,PublicKeyToken=41a432ad608f2ff0”加载类型“Matrix.Xmpp.Client.XmppClient”。
在XMPPHandler.DotNetXMPPClient..ctor()[0x00000]中:0
我试图解决的问题:

  • 为.NET3.5编译。然而,这导致了更多的错误,甚至没有出现赢的形式

  • 我尝试了绑定重定向,但没有成功

    <runtime>  
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">  
          <dependentAssembly>
            <assemblyIdentity name="System.Xml.Linq" publicKeyToken="b77a5c561934e089" />
            <bindingRedirect oldVersion="3.5.0.0" newVersion="4.0.0.0"/>
          </dependentAssembly>
        </assemblyBinding>
    </runtime>
    
    
    
  • 我尝试将System.Xml.Linq的3.5版本放入我的VS项目中,但它一直自动将其更改回4.0

  • 我试图寻找一种为System.Xml.Linq安装v.4.0.0的方法,发现
    sudo apt get install mono data
    应该这样做,但我被告知没有找到包(即使在apt get update之后)。我检查了
    /usr/lib/mono/gac/System.Xml.Linq
    目录,只有目录
    3.5.0.0_uuub77a5c561934e089
    存在

  • 我安装libmono-system-xml-linq4.0-cil,然后运行应用程序。现在我得到了一个分段错误


  • 如何安装4.0.0.0版,或者我还可以做些什么来让它正常工作?

    我正在Debian上使用mono 3.6(=从源代码编译的非常新的版本),并使System.Xml.Linq正常工作。我遇到的唯一问题是System.Xml.Linq.dll被复制到本地。

    这种问题通常发生在Mono没有安装某些dotnet库的情况下。您需要为Mono(在Raspbian上)安装donet系统xml库:

    在我的案例中,我需要手动安装一些库。对于Raspbian,我安装了以下库:

    apt-get install libmono-system-xml-linq4.0-cil
    apt-get install libmono-system-web-extensions4.0-cil
    

    如果由于找不到其他库而导致Mono下的应用程序无法运行,则可以查看Mono的所有可用库。

    您使用的是哪个版本的Mono?我使用的是Mono JIT编译器版本3.2.8(Debian 3.2.8+dfsg-4+rpi1)好的,这可能是Mono错误,因为我看不到这里列出了这个程序集:我建议先在bugzilla.xamarin.com中用一个最小的测试用例提交一个bug,然后尝试编译您自己的mono,将该程序集添加到assembly.c中以尝试修复它(如果您实现了它,请将您的更改作为拉动请求提出)
    apt-get install libmono-system-xml-linq4.0-cil
    
    apt-get install libmono-system-xml-linq4.0-cil
    apt-get install libmono-system-web-extensions4.0-cil