【问题标题】:Error compiling in release mode or ad-hoc mode, Xamarin Forms iOS,在发布模式或临时模式下编译时出错,Xamarin Forms iOS,
【发布时间】:2017-11-30 00:30:36
【问题描述】:

我在 xamarin forms ios 中有一个错误,它只发生在发布模式或 Ad-Hoc 模式下,如果应用程序可以在调试模式下运行,为什么会这样?

错误无法解析“System.Reflection.Emit.DynamicMethod” 来自“mscorlib,版本=4.0.0.0,文化=中性, PublicKeyToken=b77a5c561934e089" TuFacturadorApp.iOS 编译

【问题讨论】:

    标签: ios xamarin xamarin.ios xamarin.forms


    【解决方案1】:

    您需要确定哪些代码/包正在提取该代码,因为您不能在发布配置 iOS 构建中使用 Reflection.Emit

    注意:还要确保发布配置的链接器设置设置为“不链接”

    无动态代码生成

    由于 iPhone 的内核阻止应用程序动态生成代码 iPhone 上的 Mono 不支持任何形式的动态代码生成。其中包括:

    • System.Reflection.Emit 不可用。
    • 不支持 System.Runtime.Remoting。
    • 不支持动态创建类型(不支持 Type.GetType ("MyType`1")),尽管查找现有类型(例如,Type.GetType ("System.String") 可以正常工作)。 反向回调必须在编译时向运行时注册。

    回复:https://developer.xamarin.com/guides/ios/advanced_topics/limitations/#No_Dynamic_Code_Generation

    【讨论】:

    • 感谢您的回复,@SushiHangover,但唯一可以调用 Reflection.Emit 的库是 NewtonSoft.Json,是否有 Xamarin Forms 库可以替代 NewtonSoft.Json?
    • @OscarNavarro NewtonSoft 应该没问题,它确实使用反射来查找类、.ctors、props,......但不会通过发射动态创建代码。您运行的是哪个版本的 Xamarin.iOS?链接器设置为什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-01
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 2018-05-23
    相关资源
    最近更新 更多