2013-05-01 44 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