MonoDevelop: что такое действие "Содержимое" по сравнению с "Ресурсом"?

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

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

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

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

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

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

Но стрелка .png также помечена как "контент"...?

Озадаченный.

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

Ответ 1

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

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

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

Ответ 2

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

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

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

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