【问题标题】:TypeLoadException on LoadApplication(new App())LoadApplication(new App()) 上的 TypeLoadException
【发布时间】:2018-01-13 04:39:21
【问题描述】:

我有一个跨平台 Xamarin Forms 项目,在 Android 或 Windows Mobile 上运行时运行良好

现在我需要在 iOS 上运行它,但在 iPhone 模拟器上启动应用程序时出现异常:

“System.TypeLoadException:无法从程序集 'XamarinMO, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' 加载类型 'XamarinMO.Services.DataServices'。”

异常发生在代码的早期,在 iOS AppDelegate on LoadApplication(new App());:

public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{

    public override bool FinishedLaunching(UIApplication app, NSDictionary options)
    {
        global::Xamarin.Forms.Forms.Init();

        LoadApplication(new App()); -- <<*** EXCEPTION THROWN HERE ***

        ServicePointManager
        .ServerCertificateValidationCallback +=
        (sender, cert, chain, sslPolicyErrors) => true;

        return base.FinishedLaunching(app, options);
    }

我无法使用调试器单步执行代码,堆栈跟踪就像巧克力壶一样有用。

该异常似乎与我的 DataServices 类中的代码无关,因为执行甚至没有进展那么远。我的 DataServices 类似乎甚至没有被实例化 - 当我在 DataServices 构造函数的第一行放置一个断点时,执行甚至没有到达那里。这向我表明问题与类本身的代码无关(在各种 Android 和 Windows Mobile 设备上都可以正常工作)

【问题讨论】:

  • 您的链接器行为是否设置为全部链接?
  • >> "您的链接器行为是否设置为全部链接" 是。
  • 尝试将其设置为仅链接 SDK 程序集,看看这是否会有所作为。
  • @Milen。我已经试过了。

标签: ios xamarin xamarin.forms typeloadexception


【解决方案1】:

我找到了原因。

我不得不将 PCL 中的 System.Net.Http 与 Microsoft.Net.Http 交换。显然标准的 .NET System.Net.Http 适用于 Android 或 WinPhone 但不适用于 iOS。

现在项目在所有平台上运行良好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    • 2019-03-17
    • 2018-08-11
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多