一般为图像文件或文件设置默认构建操作

时间:2013-05-01 14:26:49

标签: c# xamarin.ios xamarin xamarin-studio buildaction

我正在使用Xamarin Studio。是否可以为自定义文件或图像文件设置默认构建操作?

我正在开发一款使用大量PNG图像的应用。默认情况下,为我导入项目的每个图像设置BundleResource。当我使用内容而不是默认的 BundleResource 构建我的图像时,我注意到我的内存使用量减少了约25mb(从220到约193mb)。

" MonoDevelop应自动选择BundleResource构建操作,但您可以在每个文件的属性中手动检查或设置此操作。"

- http://docs.xamarin.com/guides/ios/platform_features/monodevelop_features

2 个答案:

答案 0 :(得分:5)

我建议不要使用Content构建操作。 BundleResource构建操作稍后添加并且功能更强大,但它们之间的唯一区别是从项目中文件位置到应用程序包中文件位置的映射。 Content构建操作仅用于向后兼容。

如果您看到不同的内存使用,则必须有其他原因。您是否尝试比较应用包的两个版本?

将内容文件复制到应用程序包中,其相对路径与项目中的相对路径相匹配。 BundleResource文件的处理方式相同,除了,如果它们位于项目的资源目录中,则会删除此前缀。我们的想法是,您可以根据Apple API的要求将内容复制到应用程序包的根目录中,而不会弄乱项目的根目录。

因此,例如,使用BundleResource构建操作,您的项目中的文件Resources\Foo\Bar.png将被复制到应用包中的Foo\Bar.png。使用Content构建操作时,它将被复制到Resources\Foo\Bar.png(尽管您不允许在应用程序包中包含名为“Resources”的目录,因为它是Apple保留名称,因此您需要得到一个错误)。

BundleResource还支持IPhoneResourcePrefix项目属性,您只能通过手动编辑csproj文件来设置该属性,该文件允许您定义更多要以此方式处理的目录,例如,您可以拥有Images目录。这使您可以更好地控制组织资源。您还可以在任何LogicalName项目上使用BundleResource项元数据来完全覆盖其捆绑相对位置。

答案 1 :(得分:0)

似乎无法设置默认构建操作。但是,在将文件添加到项目时,“添加文件”对话框提供了覆盖将导入文件以使用的构建操作的选项。

通过这种方式,您可以选择一堆PNG图像并使用内容从导入中导入它们。

http://mjhutchinson.com/journal/2011/03/monodevelop_tips_build_actions