Для других, которые пытаются это сделать, я хотел продемонстрировать, что именно я должен был сделать, чтобы использовать эти аргументы и в моем приложении.
Сначала укажите свой аргумент в командной строке, как сказал Рольф. За каждый --argument=-app-arg:SOMETHING
, который вы вводите в командной строке, вы получите «НЕЧТО» в своем списке аргументов. Пример Рольфа,
mtouch --argument=-app-arg:-ip=3.14.15.9 --launchdev=com.yourcompany.yourapp
результаты и список аргументов { "-ip=3.14.15.9" }
. Если бы я сделал что-то вроде этого
mtouch --argument=-app-arg:ARG1 --argument=-app-arg:ARG2=some_other_val --launchdev=com.yourcompany.yourapp
результирующий список аргументов { "ARG1", "ARG2=some_other_val" }
. Не было ничего особенного в тире перед ip или знаком равенства после него. Просто убедитесь, что вы передаете его так, чтобы потом можно было разобрать. ;)
В вашем приложении вы можете получить к ним доступ либо в своем методе static void Main(string[] args)
, что может быть немного сложно, так как у вас еще нет AppDelegate или UIViewController, или вы можете вызвать Environment.GetCommandLineArgs()
где угодно. Обратите внимание, что последний будет иметь фактический вызов вашего приложения в позиции 0, в то время как первый будет иметь только аргументы, а не вызов приложения.
Если вам нужно включить данные с пробелами, вы можете сделать это следующим образом:
mtouch --argument=-app-arg:"This data has spaces" --launchdev=com.yourcompany.yourapp
Ваш окончательный список аргументов будет { "This data has spaces" }
. Без кавычек вы получите только { "This" }
. Кроме того, помните, что подстановка параметров будет происходить с двойными кавычками, но не с одинарными кавычками:
SOMEVAR="value of SOMEVAR"
mtouch --argument=-app-arg:"SOMEVAR $SOMEVAR" --launchdev=com.yourcompany.yourapp
# Results in { "SOMEVAR value of SOMEVAR" }
mtouch --argument=-app-arg:'SOMEVAR $SOMEVAR' --launchdev=com.yourcompany.yourapp
# Results in { "SOMEVAR $SOMEVAR" }
Надеюсь, это поможет любому, кто пытался сделать то, что я есть, пока не появится больше официальной документации по опции --argument
. Также обратите внимание, что если вы ссылаетесь на MonoTouch.NUnitLite, вы можете использовать Mono.Options.OptionSet
для анализа аргументов за вас, если вы не хотите заново изобретать колесо.