2011-03-23 17 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

我们将它们嵌入并使用Web视图显示它们。然后 - 如果有连接 - 从服务器加载HTML的更新版本。 – Krumelur 2012-12-01 16:15:44

回答

2

在.NET世界中,区别在于在构建过程中,标记为内容的文件被复制到输出文件夹,而资源文件成为DLL本身的一部分。由于在iOS中不存在资源,因此AFAIK,MonoTouch不包含资源,因此您总是使用Content。最后一步是将带有可执行文件和内容文件的目录压缩到.app文件中,这就是iOS所期望的。同样的事情对MonoDroid有效。

API中存在MonoTouch和MonoDroid的区别,因为这些框架的想法是几乎一对一地转换这些平台中可用的API,而不是创建一个平等支持所有平台的接口。

+0

感谢您的解释! – Krumelur 2011-03-23 21:18:58

7

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

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

MonoTouch的4.0+不支持DLL库文件的内容 - 当库编译他们错位到嵌入式资源在幕后,所以你可以为一个dll文件共享,那么他们解压到编译应用程序时的应用程序包。

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

+0

很高兴听到那个mhutch。我从来没有必要使用嵌入式资源,因为大部分时间资源只是图像和文本文件,但知道选项在那里总是很棒的! – 2011-03-24 14:27:34