C#Mono:尝试使用DLL引用时出现TypeLoadException

时间:2011-12-29 20:48:57

标签: c# linux mono monodevelop

我是Mono / .NET的新手,所以我不确定我是否正确添加我的引用。我正在尝试实现Fleck WebSockets。我下载了源代码,在MonoDevelop中打开了解决方案并构建了它。我将生成的“Fleck.dll”和“Fleck.dll.mdb”放在我项目的文件夹中。然后,在MonoDevelop中,我转到了我的解决方案中的参考编辑器,并选择了Fleck.dll作为.NET程序集参考。

似乎工作正常,MonoDevelop会在该程序集中找到所有内容。如果我输入“Fleck”。然后自动完成弹出该DLL的所有成员,但如果我写了一些代码试图使用它,我得到一个TypeLoadException。它编译并运行但立即抛出异常。

我正在使用我发现的示例中的代码,所以我不认为这是一个问题。这是我的完整异常输出:

Could not load signature of Fleck.SocketWrapper:Accept due to: 
Could not load signature of Fleck.ISocket:Accept due to: 

Unhandled Exception: System.TypeLoadException: Could not load type 'Fleck.SocketWrapper' from assembly 'Fleck, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'.
at Fleck.WebSocketServer..ctor (System.String location) [0x00000] in <filename unknown>:0 
at TestServer.MainClass.Main (System.String[] args) [0x00000] in /home/danny/Projects/TestServer/Main.cs:10 
[ERROR] FATAL UNHANDLED EXCEPTION: System.TypeLoadException: Could not load type 'Fleck.SocketWrapper' from assembly 'Fleck, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'.
at Fleck.WebSocketServer..ctor (System.String location) [0x00000] in <filename unknown>:0 
at TestServer.MainClass.Main (System.String[] args) [0x00000] in /home/danny/Projects/TestServer/Main.cs:10 

我做错了什么?

1 个答案:

答案 0 :(得分:3)

对我来说很好。我在Ubuntu上使用Mono 2.10.8。我做的是:

  1. 从您指向的存储库中克隆的Fleck。
  2. Ran Nuget下载测试所需的软件包(实际上这不是必需的,因为它们已经存在于存储库中)。
  3. 已编译的Fleck,其测试和测试控制台应用程序包含在解决方案中。
  4. 应用程序已成功运行。
  5. NUnit报告所有测试也成功运行。
  6. 所以我敢打赌它应该可以正常工作。你的Mono版本是什么?

    哦,我还明确地将所有提到的项目的框架版本设置为4.0(这对于正确编译是必不可少的)。