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

时间:2011-03-23 16:58:58

标签: xamarin.ios monodevelop

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

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

目前我使用的图片如下:

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

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

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

但是arrow.png也标记为“内容”......?

困惑。

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

2 个答案:

答案 0 :(得分: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的文件是项目中的错误。

答案 1 :(得分:2)

在.NET世界中,区别在于在构建过程中,标记为Content的文件被复制到输出文件夹,而Resource文件则成为DLL本身的一部分。

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

API中的MonoTouch和MonoDroid之间存在差异,因为这些框架的想法是几乎一对一地翻译这些平台中可用的API,而不是创建一个支持所有平台的接口。