2011-03-23 9 views
10

私のアプリケーションでは、すべてのイメージ、ローカルHTMLページなどは「ビルドアクションコンテンツ」としてマークされています。 「リソース」もあることに気がつきました。MonoDevelop: "リソース"と比較してビルドアクション "コンテンツ"は何ですか?

イメージ用に使用するものと、HTMLページ用にどちらをUIWebViewに表示するのですか?

現在、私はこのような画像を使用します。

this.oImgLoginLogo.Image = UIImage.FromFile ("Data/Images/ball.png"); 

しかしMonotouch.Dialogに、私はこの行を参照してください。

static UIImage arrow = Util.FromResource (null, "arrow.png"); 

をしかしarrow.pngも... "コンテンツ" としてマークされていますか?

困惑。

各オプションの不利な点/利点は何ですか?

+0

これらは埋め込まれており、ウェブビューを使用して表示されます。接続がある場合、HTMLの更新版がサーバーからロードされます。 – Krumelur

答えて

2

.NETの世界では、ビルドプロセス中にコンテンツとしてマークされたファイルが出力フォルダにコピーされ、リソースファイルはDLL自体の一部になります。

AFAIK、MonoTouchはiOSには存在しないため、ビルドにリソースは含まれていないため、常にContentを使用しています。最後に、実行可能ファイルとコンテンツファイルを含むディレクトリをiOSが期待している.appファイルに圧縮します。同じことがMonoDroidにも有効です。

MonoTouchとMonoDroidの違いは、すべてのプラットフォームを同等にサポートするインターフェイスを作成するのではなく、これらのプラットフォームで使用できるAPIをほぼ1対1で変換することにあるということです。

+0

説明をありがとう! – Krumelur

7

埋め込みリソースは、dllまたはexeファイルに埋め込まれ、.NETリフレクションAPIからアクセスできます。コンテンツファイルはバンドルリソースで、アプリケーションバンドル(単にディレクトリ)にコピーされ、ファイルAPIまたはMonoTouchのAppleバンドルAPIを使用してアクセスできます。

MonoTouchは組み込みリソースをサポートしていますが、Appleバンドルからのものを使用するように設計されたApple固有のAPIでは使用するのが簡単ではありません。しかし、MonoTouch特有のAPIを扱っていないときや、他のプラットフォームに移植可能なライブラリを書くときには、組み込みリソースがより意味をなさないかもしれません。

MonoTouchで4.0+は、DLLライブラリ内のコンテンツファイルをサポートしています - ライブラリがコンパイルされたとき、彼らが埋め込まれたリソースに台無しにしている裏で、あなたは、単一のdllファイルとしてそれを共有することができ、それらはにアンパックしていますアプリがコンパイルされるときのアプリバンドル。

MonoTouch.Dialogは、埋め込みリソースを使用していて、ライブラリであり、MonoTouch 4に先立ってリソースをバンドルしていないと推測します。コンテンツとしてマークされたファイルはプロジェクトのバグです。

+0

それを聞いてよかったです。私は組み込みリソースを使用する必要はありませんでした。ほとんどの場合、リソースは単なるイメージやテキストファイルですが、オプションがあることを知ることは常に素晴らしいことです。 –