Xamarin iOS - Не удалось загрузить файл или сборку "System.Threading.Tasks" при запуске
Я просто обновился до студии Xamarin 5.9 (сборка 431) и больше не могу запускать свой проект. Однако он работает с чистым проектом.
Когда я запускаю свое приложение, я даже не сажусь в Main.
Результат приложения в студии Xamarin печатает кучу сборочных нагрузок. Он доходит до MobileClientiOS.app/Newtonsoft.Json.dll [External]
, затем он выходит со следующим выходом:
Не удалось загрузить файл или сборку "System.Threading.Tasks" или один из зависимостей. Система не может найти указанный файл. (System.IO.FileNotFoundException) в System.AppDomain.Load(System.Reflection.AssemblyName assemblyRef, System.Security.Policy.Evidence assemblySecurity) [0x00081] в... /mono/mcs/class/corlib/System/AppDomain.cs: 706 at System.AppDomain.Load(System.Reflection.AssemblyName assemblyRef) [0x00000] в... /mono/mcs/class/corlib/System/AppDomain.cs: 674 at System.Reflection.Assembly.Load(System.Reflection.AssemblyName assemblyRef) [0x00000] в... /mono/mcs/class/corlib/System.Reflection/Assembly.cs: 551 at ObjCRuntime.Runtime.CollectReferencedAssemblies(System.Collections.Generic.List 1 сборки, System.Reflection.Assembly) [0x00019] в... /maccore/src/ObjCRuntime/Runtime.cs: 218 at ObjCRuntime.Runtime.CollectReferencedAssemblies(System.Collections.Generic.List 1 сборки, System.Reflection.Assembly) [0x0002c] в... /maccore/src/ObjCRuntime/Runtime.cs: 220 at ObjCRuntime.Runtime.CollectReferencedAssemblies(System.Collections.Generic.List 1 сборки, System.Reflection.Assembly) [0x0002c] в... /maccore/src/ObjCRuntime/Runtime.cs: 220 at ObjCRuntime.Runtime.RegisterEntryAssembly(System.Reflection.Assembly entry_assembly) [0x0001b] в... /maccore/src/ObjCRuntime/Runtime.cs: 200 at ObjCRuntime.Runtime.RegisterEntryAssembly(IntPtr a) [0x00000] в... /maccore/src/ObjCRuntime/Runtime.cs: 158 at ObjCRuntime.Runtime.register_entry_assembly (сборка IntPtr) [0x00000] в... /maccore/runtime/Delegates.generated.cs: 118 at (оболочка, относящаяся к управляемому) ObjCRuntime.Runtime: register_entry_assembly (intptr) 2015-05-04
MobileClientiOS [77830: 1943120] критический: у вас есть SIGABRT while выполнение собственного кода. Обычно это указывает на фатальную ошибку в mono runtime или одну из встроенных библиотек, используемых вашим приложением.
Извините за длинную stacktrace, но у меня нет идей. Мы используем PCL, но до этого обновления Xamarin Studio не было проблем.
Спасибо!
Изменить:
Я понизил Xamarin.iOS, и он снова работает. Сборка, на которую, похоже, не работает (теперь она работает со старой версией):
/MobileClientiOS.app/System.Xml.Linq.dll [Внешний]
Как работать с последней версией? Я не знаю.
Ответы
Ответ 1
Чтобы предположить, я думаю, что это может иметь одну и ту же основную причину: Xamarin Bug 29211.
Если это правда, тогда есть хорошие шансы на то же обходное решение:
В разделе "Параметры проекта → iOS Build → Дополнительные аргументы mtouch" добавить:
-linkskip = System.Threading.Tasks
Если это обходное решение действительно работает, то, скорее всего, проблема будет исправлена в предстоящем выпуске службы (из-за его выхода на этой неделе).
Обновление 2 июля 2015 г.
Оказывается, для System.Threading.Tasks
существует еще одна тонко разная общая причина проблемы. Эта вторая ошибка была первоначально скрыта Bug 29211, потому что две ошибки очень похожи. Вторая проблема теперь отслеживается в Xamarin Bug 31560. Обратите внимание, что эта ошибка влияет только на сборки симулятора и имеет довольно простые обходные пути, поэтому она незначительна по степени тяжести.