Я столкнулся с проблемой, когда не могу получить доступ к ресурсам, помеченным для использования в функции ресурсов Apple по требованию, через приложение Xamarin. iOS, но только при запуске на симуляторе. Это произошло только после обновления моей среды. Ранее я работал в Visual Studio для Ma c версии 8.3.9 и Xcode версии 11.2.1, и мое приложение могло без проблем получать доступ к ресурсам ODR как на симуляторе, так и на физическом устройстве.
Теперь я нахожусь на Visual Studio версии 8.4.2 и Xcode версии 11.3.1, и мое приложение работает неправильно. Тем не менее, я вижу только проблемы при работе на iOS симуляторе (для любой версии iOS). Я могу собрать и запустить на физическом устройстве (под управлением iOS версия 13.0) и не вижу проблем.
Я создаю и отмечаю актив для использования в Apple ODR через Visual Studio для Ma c. У меня есть ZIP-файл, который я добавляю в проект iOS моего приложения непосредственно в качестве ресурса. В его свойствах я устанавливаю BuildAction как BundleResource, выбираю «Не копировать» в выходной каталог и присваиваю ему тег ресурса по требованию.
Когда я создаю свое решение, я вижу этот ZIP-файл, вложенный в каталог * .assetpack в bin/iPhone/Debug/device-builds/iphone12.3-13.0/OnDemandResources
. Я полагаю, что вместо этого должно быть указано bin/iPhone/Debug/OnDemandResources/
. Когда я запускаю код, который вызывает NSBundleResourceRequest
s BeginAccessingResourcesAsync
, он, похоже, ничего не делает. Я вижу следующее сообщение об ошибке в окне отладки Application Output в VS после вызова этой функции:
Begin: Request 0x0x600002566100 response: Error: Error Domain=NSCocoaErrorDomain Code=4994 "The requested application data doesn’t exist." UserInfo={NSLocalizedFailureReason=InvalidTag}
Нет других ошибок или исключений. Когда я пытаюсь получить путь к ресурсу от объекта NSBundleResourceRequest.Bundle
, он, как ожидается, возвращает ноль.
Есть ли причины, по которым это происходит, и почему это происходит только на симуляторе iOS, а не на физическом устройстве? Я не смог найти ничего полезного при поиске вышеуказанного сообщения об ошибке. Что-то изменилось в Visual Studio относительно того, как встроенные ресурсы создаются в режиме отладки?