我正在启动一个新的主xamarin页面进行测试,并更新了xamarin.android.support和xamarin.forms版本的nuget包。之后,我的程序出现异常:
加载应用程序收到异常错误:
base.OnCreate(savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
LoadApplication(new App());
Unhandled Exception:
System.TypeLoadException: Could not load type of field 'Xamarin.Forms.Platform.Android.RendererPool:_freeRenderers' (0) due to: Could not resolve type with token 01000275 from typeref (expected class 'System.Collections.Generic.Stack`1' in assembly 'mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e') assembly:mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e type:System.Collections.Generic.Stack`1 member:(null) occurred
在所有项目中将 xamarin.forms 和 xamarin.forms.maps 降级到 v4.1.0.778454。
我做到了,工作得很好
该问题在 github 上跟踪,该问题仅触发 Visual Studio 2017 用户。如果使用 Visual Studio 2019 编译应用,则应用在 Xamarin.Forms 4.2.0.815419(4.2.0 服务版本 2(中运行良好。
这是由Mono更改引起的,该更改使其在VS2019中进入Xamarin.Android。
System.Collections.Generic.Queue 在
C:Program Files (x86)Microsoft Visual Studio2017EnterpriseCommon7IDEReferenceAssembliesMicrosoftFrameworkMonoAndroidv1.0System.dll
和
C:Program Files (x86)Microsoft Visual Studio2019EnterpriseCommon7IDEReferenceAssembliesMicrosoftFrameworkMonoAndroidv1.0mscorlib.dll
它不适用于
C:Program Files (x86)Microsoft Visual Studio2017EnterpriseCommon7IDEReferenceAssembliesMicrosoftFrameworkMonoAndroidv1.0mscorlib.dll
因此,如果任何依赖于队列的 dll 符合 VS2019,并在 VS2017,它将抛出异常无法从mscorlib加载队列。
Xamarin.Forms 团队现在尝试在 XF 代码中内部实现堆栈和队列,以实现 VS 2017 兼容性。
在合并之前,最后一个Xamarin.Forms位是用VS2017编译的,并且可以在VS2017中正常工作。
导致崩溃的初始屏幕。 以下答案修复了我在最新的 Xamarin 表单 (4.2.0.815419( 和 VS 2019 Ent (16.3.1( 中的问题
检查这里