2013-05-01 49 views
1

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

我正在开发一个使用了很多PNG图像的应用程序。对于导入到项目中的每个图像,BundleResource都是默认设置的。我注意到,当我使用内容而不是默认BundleResource构建我的图像时,我的内存使用量减少了约25mb(从220到约193mb)。

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

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

回答

0

它不会出现一个默认的构建作用可以设定。但是,将文件添加到项目时,“添加文件”对话框提供了用于覆盖将导入文件以供使用的构建操作的选项。

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

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

+0

是的,这确实有帮助,但我通常通过添加现有文件夹或仅通过拖放文件夹将所有文件添加到我的项目中。 – LampShade 2013-05-01 15:38:03

5

我会建议不要使用Content生成操作。 BundleResource构建操作稍后添加,功能更强大,但它们之间的唯一区别是将文件在项目中的位置映射到应用程序包中文件的位置。只有保留Content构建操作才能保持向后兼容性。

如果您看到不同的内存使用情况,那么一定有其他原因。你有没有尝试过比较你的应用程序包的两个版本?

将内容文件复制到应用程序包中,其中的相对路径与项目中的相对路径相匹配。 BundleResource文件的处理方式与相同,除外,如果它们位于项目的Resource目录中,则该前缀将被剥离。这个想法是,您可以根据Apple API的要求将其复制到应用程序包的根目录中,而不会混淆项目的根目录。

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

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

+0

感谢您的详细信息!看起来我最终会使用BundleResource。我仍然看到两个构建操作之间的不同内存使用情况。这实际上让我害怕让我觉得我在做可怕的事情!我正在做很多UIImage.FromFiles()和CIFilters。一切似乎都在工作,所以我不会担心。如果我想出更多关于这个问题的信息,我会让你知道的。 – LampShade 2013-05-06 13:18:37