Ловля ошибок имени файла ресурса во время компиляции - PullRequest
3 голосов
/ 23 февраля 2012

Я делаю свое первое приложение для iOS с Monotouch и загружаю довольно много изображений из своего каталога ресурсов. Время от времени я получаю опечатку в имени файла, и затем приложение вылетает на меня, извергая какое-то непонятное сообщение об ошибке. (Я попытаюсь добавить расшифровку следов стека к моему набору навыков в любой день ...)

Я думал, что должен быть более разумный способ справиться с этим. Например, можно использовать служебный скрипт, который проходит через каталог ресурсов и создает список глобальных констант на основе его содержимого. Каждый файл в ресурсах получает запись.

Так что MyResources / Icons / HomeIcon.png будет представлен константой MyResources.Icons.HomeIcon_png. Тогда можно было бы сделать что-то вроде Inotify (не знаю, что это будет на Mac), просматривать каталог ресурсов и заново генерировать файл констант при каждом изменении.

Это, конечно, также даст хорошее автозаполнение ресурсов.

Может быть, что-то подобное уже есть в Monodevelop или где-то в сети? Иначе, как бы я настроил это?

Или, может быть, есть какой-то другой умный способ смягчить проблему?

Ответы [ 3 ]

1 голос
/ 05 марта 2012

Ваша основная проблема заключается в том, что опечатки в именах ресурсов не обнаруживаются раньше, а вызывают сбои только при фактическом запуске приложения.

Предложенное вами решение списка глобальных констант, сгенерированных на основе доступных ресурсов, выглядит довольно аккуратно, но, насколько я знаю, его пока не существует.

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

Таким образом, вы можете поймать опечатки раньше (при запуске модульного теста, а не при запуске приложения), что является вашей главной задачей. Кроме того, если вы когда-нибудь найдете / напишите свой сценарий, код вашего приложения уже подготовлен.

0 голосов
/ 11 апреля 2012

Итак, я потратил четыре драгоценных часа, чтобы подготовить этот маленький скрипт на python, который вроде решает мою проблему. На данный момент это лучшее решение моей проблемы.

http://github.com/oivvio/Monodevelop-Resources-as-Constants

0 голосов
/ 05 марта 2012

Я отправил вам сообщение об ошибке улучшения на Xamarin bugzilla: https://bugzilla.xamarin.com/show_bug.cgi?id=3760

...