MonoDevelop:构建动作"内容"与"资源"相比是什么?

Kru*_*lur 10 monodevelop xamarin.ios

在我的应用程序中,所有图像,本地HTML页面等都标记为"构建操作内容".我刚刚意识到还有"资源".

我应该将哪一个用于图像,哪一个用于HTML页面在UIWebView中显示?

目前我使用这样的图像:

this.oImgLoginLogo.Image = UIImage.FromFile ( "Data/Images/ball.png" );
Run Code Online (Sandbox Code Playgroud)

但在Monotouch.Dialog中我看到这一行:

static UIImage arrow = Util.FromResource (null, "arrow.png");
Run Code Online (Sandbox Code Playgroud)

但是arrow.png也被标记为"内容"......?

困惑.

每种选择的不利/优势是什么?

Mik*_*son 7

嵌入式资源嵌入到dll或exe文件中,可从.NET反射API访问.内容文件是捆绑资源,并被复制到应用程序包(只是一个目录),并可使用文件API或MonoTouch的Apple捆绑API进行访问.

MonoTouch确实支持嵌入式资源,但它们并非直接使用Apple特定的API,这些API旨在使用应用程序包中的内容.但是,当您不处理特定于MonoTouch的API时,或者当您编写可移植到其他平台的库时,嵌入式资源可能更有意义.

MonoTouch 4.0+支持dll库中的内容文件 - 在编译库时,它们会被嵌入到嵌入式资源中,因此您可以将其作为单个dll文件共享,然后在应用程序包中将它们解压缩到应用程序包中编译.

我的猜测是MonoTouch.Dialog使用嵌入式资源而不是捆绑资源,因为它是一个库并且早于MonoTouch 4,因此标记为Content的文件是项目中的错误.


Edu*_*coz 2

在 .NET 世界中,不同之处在于,在构建过程中,标记为内容的文件被复制到输出文件夹,而资源文件则成为 DLL 本身的一部分。

AFAIK,MonoTouch 不会将资源包含到构建中,因为 iOS 中不存在资源,因此这就是您始终使用 Content 的原因。最后一步是将包含可执行文件和内容文件的目录压缩到 .app 文件中,这正是 iOS 所期望的。同样的事情也适用于 MonoDroid。

MonoTouch 和 MonoDroid 之间存在 API 差异,因为这些框架的理念是几乎一对一地转换这些平台中可用的 API,而不是创建一个同等支持所有平台的界面。