2012-02-29 16 views
2

私はいくつかのビジネス機能を持つ小さなアセンブリを持っています(Webサービスに呼び出してデータを受け取り、リストに戻す)。このアセンブリは、Visual Studioで開発されコンパイルされました。アセンブリーをロード中にモノード例外が発生しました - アセンブリをロードできませんでしたSystem.Net

私はアセンブリをとり、iPhoneアプリケーションプロジェクトでMonoDevelopとMonoTouchを使ってこのアセンブリを参照しました。それは完全に動作します。

私はMonoDroidでMonoDevelopでAndroidアプリケーション用の新しいプロジェクトを作成しました。コードは完璧にコンパイルされます。私はAndroid上のアプリを展開するときしかし、私はこの例外を取得:

/Library/Frameworks/Mono.framework/External/xbuild/Novell/Novell.MonoDroid.Common.targets: 
Error: Exception while loading assemblies: 
System.IO.FileNotFoundException: Could not load assembly 'System.Net, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'. 
Perhaps it doesn't exist in the Mono for Android profile? 
File name: 'System.Net.dll' 
    at Monodroid.Tuner.MonoDroidResolver.Resolve (Mono.Cecil.AssemblyNameReference reference, Mono.Cecil.ReaderParameters parameters) [0x00000] in <filename unknown>:0 
    at Monodroid.Tuner.MonoDroidResolver.Resolve (Mono.Cecil.AssemblyNameReference reference) [0x00000] in <filename unknown>:0 
    at Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences (System.Collections.Generic.List`1 assemblies, Mono.Cecil.AssemblyDefinition assembly) [0x00000] in <filename unknown>:0 
    at Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences (System.Collections.Generic.List`1 assemblies, Mono.Cecil.AssemblyDefinition assembly) [0x00000] in <filename unknown>:0 
    at Xamarin.Android.Tasks.ResolveAssemblies.Execute() [0x00000] in <filename unknown>:0 

私の知る限りは、モノラルシステムアセンブリにSystem.Netアセンブリを持って知っています。私はシステムアセンブリが私のプロジェクトで参照されています。

アイデア?

答えて

4

私が知っている限り、MonoはシステムアセンブリのSystem.Netアセンブリを持っています。

号System.dllのアセンブリ内部System.Net名前空間があります。

はMonoTouchでには System.Net.dll ありませんし、私はSystem.Netがあるのいずれか(私は;-)

チェック最後の時間がなかったのAndroid用モノラルで上ないと思いますSilverlightの.dllそれは、WebClient,WebRequestWebResponse ...これは、標準フレームワーク(MonoTouchとMono for Androidを含む)のSystem.dllの部分です。

.NETフレームワークにはSystem.Net.dllがありますが、Silverlightで提供されているものとはまったく異なります。それは混乱し、非常に悪い決断だった。

このアセンブリをMonoDevelopで参照し、iPhoneアプリケーションプロジェクトでモノタッチを参照しました。

シミュレータを使用するときにJITが使用されている(と不足している参照がある限り、コードが必要とされていないとして無視されます)ので、それはMonoTouchでで作業することができます。しかしあなたのコード(デフォルトではリンクされていません)をまたはにリンクしようとすると、デバイス用にビルドしようとすると、同様のエラーメッセージ(MonoTouchリンカやAOTコンパイラは不足している参照について不平を言うでしょう)。

簡潔に: Android SDKアセンブリのMonoTouchとMonoに対してソースコードを再コンパイルする必要があります。これは唯一の安全あなたが型参照を紛失しないようにする(または存在しないアセンブリ参照を追加する)方法です。

+0

Mono for AndroidにはSystem.Net.HttpWebRequestがあります。私はそれを使用しました。問題はリンカかもしれません。そうであれば、AndroidLinkSkip: http://www.docs.xamarinを使用できます。com/android/advanced_topics/link AndroidクラスライブラリのMonoとしてライブラリをコンパイルし、もしあればどのようなエラーが発生しているかを確認することもできます。 – Matthew

+0

@Matthewあなたは混乱しています:* Mono for Android *にはSystem.Net.HttpWebRequestがあります。もちろん... :-)がありますが、それは 'System.Net' **ネームスペース**内にあります。 System.dll'アセンブリ - IOWは 'System.Net.dll'アセンブリの中にありません。オリジナルのエラーは、M4Aに**存在しない**後のアセンブリを参照しようとしています。 – poupou

+0

あなたは私をそこに持っています;)あなたがsystem.net.dllであなたが参照しているものを見る必要があるもの。それほど多くないようです。アセンブリを参照せずにライブラリをコンパイルし、何が起こるかを確認してください。 – Matthew

関連する問題