2015-12-03 1 views
2

Я построил ту же самую кодовую базу с новейшими инструментами Xamarin 4 (Xamarin Studio 5.10.1, Xamarin iOS 9.2.1, Mono MDK 4.2.1) на Mac и последнем Xamarin 3 (Xamarin Studio 5.9. 8.0, Xamarin.iOS 9.1.0.31, Mono MDK 4.0.5.1) Инструменты.Проблема Xamarin 4: проблемы с IOS AOT, которых нет в Xamarin 3. Каково решение?

Xamarin 3 строит работу просто отлично, Xamarin 4 нет. Вот проблема АОТ производства библиотеки MS ADAL:

System.ExecutionEngineException: Attempting to JIT compile method 
'(wrapper runtime-invoke) <Module>:runtime_invoke_bool_Nullable`1<DateTimeOffset> (object,intptr,intptr,intptr)' 
while running with --aot-only. 
See http://docs.xamarin.com/ios/about/limitations for more information. 

и полное StackTrace:

System.Reflection.MonoMethod.Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, CultureInfo culture) 
System.Reflection.MethodBase.Invoke(object obj, object[] parameters) 
System.Runtime.Serialization.Json.JsonFormatWriterInterpreter.UnwrapNullableObject(Func<_> memberValue, ref Type memberType, ref bool isNull) 
System.Runtime.Serialization.Json.JsonFormatWriterInterpreter.WriteValue(Type memberType, object memberValue) 
System.Runtime.Serialization.Json.JsonFormatWriterInterpreter.WriteMembers(ClassDataContract classContract, ExtensionDataObject extensionData, ClassDataContract derivedMostClassContract) 
System.Runtime.Serialization.Json.JsonFormatWriterInterpreter.WriteClass(ClassDataContract classContract) 
System.Runtime.Serialization.Json.JsonFormatWriterInterpreter.WriteToJson(XmlWriterDelegator xmlWriter, object obj, XmlObjectSerializerWriteContextComplexJson context, ClassDataContract dataContract, XmlDictionaryString[] memberNames) 
System.Runtime.Serialization.Json.JsonFormatWriterGenerator.CriticalHelper.<GenerateClassWriter>c__AnonStorey0.<>m__0(XmlWriterDelegator xmlWriter, object obj, XmlObjectSerializerWriteContextComplexJson context, ClassDataContract dataContract, XmlDictionaryString[] memberNames) 
System.Runtime.Serialization.Json.JsonClassDataContract.WriteJsonValueCore(XmlWriterDelegator jsonWriter, object obj, XmlObjectSerializerWriteContextComplexJson context, RuntimeTypeHandle declaredTypeHandle) 
System.Runtime.Serialization.Json.JsonDataContract.WriteJsonValue(XmlWriterDelegator jsonWriter, object obj, XmlObjectSerializerWriteContextComplexJson context, RuntimeTypeHandle declaredTypeHandle) 
System.Runtime.Serialization.Json.DataContractJsonSerializer.WriteJsonValue(JsonDataContract contract, XmlWriterDelegator writer, object graph, XmlObjectSerializerWriteContextComplexJson context, RuntimeTypeHandle declaredTypeHandle) 
System.Runtime.Serialization.Json.XmlObjectSerializerWriteContextComplexJson.WriteDataContractValue(DataContract dataContract, XmlWriterDelegator xmlWriter, object obj, RuntimeTypeHandle declaredTypeHandle) 
System.Runtime.Serialization.XmlObjectSerializerWriteContext.SerializeWithoutXsiType(DataContract dataContract, XmlWriterDelegator xmlWriter, object obj, RuntimeTypeHandle declaredTypeHandle) 
System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize(XmlWriterDelegator xmlWriter, object obj, bool isDeclaredType, bool writeXsiType, int declaredTypeID, RuntimeTypeHandle declaredTypeHandle) 
System.Runtime.Serialization.XmlObjectSerializerWriteContextComplex.InternalSerialize(XmlWriterDelegator xmlWriter, object obj, bool isDeclaredType, bool writeXsiType, int declaredTypeID, RuntimeTypeHandle declaredTypeHandle) 
System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerializeReference(XmlWriterDelegator xmlWriter, object obj, bool isDeclaredType, bool writeXsiType, int declaredTypeID, RuntimeTypeHandle declaredTypeHandle) 
System.Reflection.MonoMethod.InternalInvoke(MonoMethod, object, object[], ref Exception)(wrapper managed-to-native) 
System.Reflection.MonoMethod.Invoke(object obj, BindingFlags invokeAttr, Binder binder, object[] parameters, CultureInfo culture) 
Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext.<AcquireTokenCommonAsync>d__68.MoveNext() 
Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext.<AcquireTokenAsync>d__4b.MoveNext() 

Я бы признателен за любые конструктивные объяснения того, что изменилось и почему это эта вещь уже не работает ,

Связано ли это с изменением реализации Mono или каким-то странным поведением mtouch?

+0

Gabor У меня такая же проблема, как и вы, не могли бы вы это исправить? –

+0

@ Fran_gg7, нет, я только что вернулся к предыдущей версии набора инструментов (но вы можете выдвинуть на первый план вопрос, если вы найдете соответствующий вопрос). Как сказал Пупо, это, вероятно, ошибка, поэтому я сообщу об этом в ближайшее время. – Gabor

ответ

1

Решение: отправьте сообщение об ошибке, на http://bugzilla.xamarin.com, вместе с тестовым чехлом. Там очень мало вероятности, что кто-то из stackoverflow может помочь с такими конкретными проблемами.

Что касается причины? вероятно, переход от моно-кода (моно-4.0 был использован в XI 9.1) к коду MS RS (открытый источник BC BCL, используемый в mono 4.2 и XI 9.2), который попадает в случай, когда компилятор AOT не обрабатывает.

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

0

У меня была та же проблема. После большого количества времени, я обнаружил, что app.config отсутствовал в моем файле проекта. Добавление этого файла в мой проект решило эту проблему. Дайте мне знать, если это сработает!

Смежные вопросы