2011-12-29 20 views
1

Mono/.NETを初めて使用しているので、参照を追加するかどうかはわかりません。私はFleck WebSocketを実装しようとしています。私はソースをダウンロードし、MonoDevelopでそのソリューションを開き、それを構築しました。結果の "Fleck.dll"と "Fleck.dll.mdb"を取得し、プロジェクトのフォルダに配置しました。次に、MonoDevelopで、私のソリューションのリファレンスエディタに行き、Fleck.dllを.Netアセンブリリファレンスとして選択しました。C#Mono:DLL参照を使用しようとするとTypeLoadExceptionが発生する

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? –

+0

私はCPUアーキテクチャのx86オプションしか提供しません(私は64ビットCPUを使用していますが)。私は、デバッグモードでFleckをコンパイルしたことに気づきました。リリースモードに切り替えて既存のDLLを置き換えましたが、まったく同じ例外があります。 – DWilliams

+0

どのプロジェクトですか? –

答えて

3

私にとってはうまくいきます。私はUbuntuでMono 2.10.8を使用しています。私がしたことは:

  1. あなたが指摘しているリポジトリから。
  2. テスト用に必要なパッケージをダウンロードするためのRan Nuget(実際にはリポジトリに入っていないので、これは実際には不要でした)。
  3. コンパイルされたFleck、そのテスト、およびテストコンソールアプリケーションは、ソリューションに含まれています。
  4. アプリケーションは正常に実行されました。
  5. NUnitは、すべてのテストが正常に実行されたと報告しました。

だから私はうまくいくはずです。 Monoのバージョンは何ですか?

ああ、私は明示的にすべてのプロジェクトのフレームワークバージョンを4.0に設定しました(適切なコンパイルには不可欠でした)。

+0

Aha、これは問題のようです。 MonoDevelopはフレームワークバージョン3.5を使用するようにデフォルト設定されています。 4.0に変更したところ、うまくいきました。ありがとうございました。 – DWilliams

関連する問題