MonoDevelop: что такое сборочное действие «Контент» по сравнению с «Ресурсом»? - PullRequest
10 голосов
/ 23 марта 2011

В моем приложении все изображения, локальные HTML-страницы и т. Д. Помечены как «Содержимое действия сборки».Я только что понял, что есть также «Ресурс».

Какой из них я должен использовать для изображений, а какой для страниц HTML для отображения в UIWebView?

В настоящее время я использую изображения, подобные этим:

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

Но в Monotouch.Dialog я вижу эту строку:

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

Но arrow.png также помечается как "content" ...?

Puzzled.

Каковы недостатки / преимущества каждого варианта?

Ответы [ 2 ]

7 голосов
/ 24 марта 2011

Встроенные ресурсы встроены в файл dll или exe и доступны из API-интерфейсов .NET. Файлы содержимого - это ресурсы комплекта , которые копируются в комплект приложения (который является просто каталогом) и доступны с помощью файловых API или API связки MonoTouch Apple.

MonoTouch поддерживает встроенные ресурсы, но их непросто использовать из специфичных для Apple API-интерфейсов, которые предназначены для использования вещей из пакета приложений. Однако встроенные ресурсы могут иметь больше смысла, когда вы не имеете дело с API, специфичными для MonoTouch, или когда вы пишете библиотеки, переносимые на другие платформы.

MonoTouch 4.0 + поддерживает файлы содержимого в библиотеках dll - за кулисами они копируются во встроенные ресурсы при компиляции библиотеки, поэтому вы можете поделиться им как одним файлом dll, а затем распаковывается в пакет приложения при компиляции приложения.

Я предполагаю, что MonoTouch.Dialog использовал встроенные ресурсы, а не связывал ресурсы, потому что это библиотека, предшествующая MonoTouch 4, поэтому файл, помеченный как Content, является ошибкой в ​​проекте.

2 голосов
/ 24 марта 2011

В мире .NET разница состоит в том, что в процессе сборки файл, помеченный как Content, копируется в выходную папку, а файл Resource становится частью самой DLL.

AFAIK, MonoTouch не включает ресурсы в сборку, потому что их нет в iOS, поэтому вы всегда используете Content. На последнем шаге архив с исполняемым файлом и файлами содержимого архивируется в файл .app, как того ожидает iOS. То же самое относится и к MonoDroid.

Разница между MonoTouch и MonoDroid в API существует потому, что идея этих платформ состоит в том, чтобы транслировать, почти один к одному, API-интерфейсы, доступные на этих платформах, вместо создания одного интерфейса, который поддерживает все платформы одинаково. *

...