2011-12-29 50 views
1

我是新来的单声道/ .NET,所以我不太确定如果我添加我的引用权利或不。我试图实施Fleck WebSockets。我下载了源代码,在MonoDevelop中打开了解决方案,并构建了它。我将生成的“Fleck.dll”和“Fleck.dll.mdb”放在我的项目文件夹中。然后,在MonoDevelop中,我找到了解决方案中的参考编辑器,并选择了Fleck.dll作为.NET程序集参考。C#单声道:TypeLoadException当试图使用DLL参考

它似乎正常工作,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 

我在做什么错?

+0

你把它编译为什么? 32位,64位或任何cpu? – 2011-12-29 20:50:56

+0

它只为CPU架构提供了x86选项(尽管我使用的是64位CPU),但我意识到我已经在调试模式下编译了Fleck。我将它切换到释放模式并替换了现有的DLL,但我仍然得到完全相同的异常。 – DWilliams 2011-12-29 20:55:04

+0

哪个项目? – 2011-12-29 21:03:17

回答

3

它适用于我。我在Ubuntu上使用Mono 2.10.8。我所做的是:

  1. 从您指定的存储库中克隆了Fleck。
  2. Ran Nuget为测试下载需要的软件包(实际上这并不是必需的,因为它们已经在存储库中)。
  3. 编译Fleck,其测试和测试控制台应用程序包含在解决方案中。
  4. 应用程序运行成功。
  5. NUnit报告所有测试也成功运行。

所以我敢打赌它应该可以正常工作。你的Mono版本是什么?

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

+0

Aha,这似乎是问题所在。 MonoDevelop显然默认使用框架版本3.5。我把它切换到4.0,它似乎工作,谢谢。 – DWilliams 2011-12-30 01:17:00