2011-12-29 3 views
1

Я новичок в Mono/.NET, поэтому я не совсем уверен, добавляю ли я свою ссылку или нет. Я пытаюсь реализовать Fleck WebSockets. Я загрузил источник, открыл решение в MonoDevelop и построил его. Я взял полученные «Fleck.dll» и «Fleck.dll.mdb» и поместил их в папку моего проекта. Затем в MonoDevelop я пошел в редактор ссылок в своем решении и выбрал файл Fleck.dll как ссылку на сборку .NET.C# Mono: TypeLoadException при попытке использовать ссылку на DLL

Кажется, что он работает правильно, MonoDevelop находит все в этой сборке. Если я наберу «Флек». то автозаполнение всплывает со всеми членами этой 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-битный или любой процессор? –

+0

Это только дает мне x86 вариант для архитектуры процессора (хотя я использую 64-битный процессор). Я только что понял, что скомпилировал Fleck в режиме Debug. Я переключил его в режим Release и заменил существующую DLL, но я все равно получаю то же самое исключение. – DWilliams

+0

, для какого проекта? –

ответ

3

Это прекрасно работает для меня. Я использую Mono 2.10.8 на Ubuntu. Что я сделал:

  1. Cloned Fleck из репозитория, на который вы указали.
  2. Ran Nuget для загрузки необходимых пакетов для тестов (на самом деле это не было необходимо, поскольку они уже находятся в репозитории).
  3. Скомпилированный Fleck, его тесты и тестовое консольное приложение, содержащееся в решении.
  4. Приложение успешно работает.
  5. NUnit сообщил, что все тесты также успешно выполнялись.

Так что я уверен, что он должен работать нормально. Какова ваша версия Mono?

О, я также явно установил версию фреймворка для всех упомянутых проектов в 4.0 (что было необходимо для правильной компиляции).

+0

Ага, похоже, проблема. Очевидно, MonoDevelop по умолчанию использует фреймворк версии 3.5. Я переключил его на 4.0 и, похоже, работает, спасибо. – DWilliams