2016-12-21 7 views
0

У меня возникла странная проблема, когда я хотел начать отладку приложения на реальном устройстве.Построение для iPhone не работает

Проблема появляется в сборке звучит так:

«C: \ Program Files (x86) \ MSBuild \ Xamarin \ IOS \ Xamarin.iOS.Common.targets (696,3): ошибка: Не удалось разрешить «System.Threading.Tasks.Task`1 Acr.UserDialogs.IUserDialogs :: ConfirmAsync (System.String, System.String, System.String, System.String)" ссылка из раздела "Acr.UserDialogs.Interface , Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null "5> 5> Build FAILED."

Странная часть заключается в том, что если я просто запускаю ее на симуляторе (без изменения чего-либо еще), он работает. Также, если я выбираю опцию «Не ссылаться» из «Параметры проекта» -> «Структура iOS» -> «Параметры компоновщика» -> «поведение компоновщика»: не ссылайтесь на нее, также на устройстве. Я пытался использовать разные версии этого пакета (Acr.UserDialogs), но с этим ничего не изменилось.

Почему это происходит и что делать, чтобы иметь возможность запускать приложение на устройстве с помощью «поведения Linker: только сборки Link SDK»?

Спасибо!

ответ

0

Основная цель iOS-компоновщика - уменьшить размер пакета. При этом он также удалит код, который не используется, что может привести к множеству проблем. Теперь я не могу сказать, в чем проблема. В моем случае, например, конструкторы были удалены, потому что их нигде не называли. Однако это не так, потому что классы были созданы с помощью IoC, поэтому были использованы конструкторы, несмотря на отсутствие прямых ссылок на них. Если вы являетесь автором проблемной сборки, вы можете отметить классы, которые вызывают проблемы с компоновщиком с атрибутом [Сохранить]. Это расскажет линкеру о том, чтобы оставить эти классы в покое. Если вы этого не сделаете, вы можете исключить только одну сборку из ссылки на prosess, предоставив --linkskip = AssemblyName в аргументе mtouch - это свойства проекта iOS.

+0

Я добавил 'linkship = Acr.UserDialogs.Interface --linkship = System.Threading.Tasks', а также другую комбинацию этих или просто Acr.Dialogs, но такую ​​же ошибку –