Я построил ту же самую кодовую базу с новейшими инструментами 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?
Gabor У меня такая же проблема, как и вы, не могли бы вы это исправить? –
@ Fran_gg7, нет, я только что вернулся к предыдущей версии набора инструментов (но вы можете выдвинуть на первый план вопрос, если вы найдете соответствующий вопрос). Как сказал Пупо, это, вероятно, ошибка, поэтому я сообщу об этом в ближайшее время. – Gabor