【问题标题】:TypeLoadException on startup启动时的 TypeLoadException
【发布时间】:2013-09-23 17:29:28
【问题描述】:

最近开始使用 Xamarin 和 MvvmCross。忙着构建我的第一个项目。创建了我的 .Core 项目和 ViewModel,在 Visual Studio 中安装了 Nuget 包。创建了我的 .Droid 项目,安装了 Nuget 包。创建了我的第一个视图,现在尝试运行该应用程序。但是我得到以下异常:

Could not load type 'System.Runtime.CompilerServices.ExtensionAttribute' from assembly 'Cirrious.MvvmCross.Binding.Droid'.

Full stacktrace:
W/        ( 1438): Missing method .ctor in assembly /data/data/XamTest.Droid/files/.__override__/Cirrious.MvvmCross.Droid.dll, type System.Runtime.CompilerServices.ExtensionAttribute
W/        ( 1438): Can't find custom attr constructor image: /data/data/XamTest.Droid/files/.__override__/Cirrious.MvvmCross.Droid.dll mtoken: 0x0a000012
Unhandled Exception:

System.TypeLoadException: 
E/mono    ( 1438): 
E/mono    ( 1438): Unhandled Exception:
E/mono    ( 1438): System.TypeLoadException: Could not load type 'System.Runtime.CompilerServices.ExtensionAttribute' from assembly 'Cirrious.MvvmCross.Droid'.
E/mono    ( 1438): at XamTest.Droid.SplashScreen..ctor () [0x00000] in c:\Dev\XamTest\XamTest.Droid\SplashScreen.cs:16
E/mono    ( 1438): at (wrapper dynamic-method) object.38e61b4f-1913-46a5-ba4a-75980457a823 (intptr,object[]) <IL 0x00018, 0x00053>
E/mono    ( 1438): at Java.Interop.TypeManager.n_Activate (intptr,intptr,intptr,intptr,intptr,intptr) [0x0006a] in /Users/builder/data/lanes/monodroid-lion-bigsplash/0e0e51f9/source/monodroid/src/Mono.Android/src/Java.Interop/TypeManager.cs:141
E/mono    ( 1438): at (wrapper native-to-managed) Java.Interop.TypeManager.n_Activate (intptr,intptr,intptr,intptr,intptr,intptr) <IL 0x0001e, 0x000a3>
E/mono    ( 1438): 
I/mono    ( 1438): [ERROR] FATAL UNHANDLED EXCEPTION: System.TypeLoadException: Could not load type 'System.Runtime.CompilerServices.ExtensionAttribute' from assembly 'Cirrious.MvvmCross.Droid'.
I/mono    ( 1438): at XamTest.Droid.SplashScreen..ctor () [0x00000] in c:\Dev\XamTest\XamTest.Droid\SplashScreen.cs:16
I/mono    ( 1438): at (wrapper dynamic-method) object.38e61b4f-1913-46a5-ba4a-75980457a823 (intptr,object[]) <IL 0x00018, 0x00053>
I/mono    ( 1438): at Java.Interop.TypeManager.n_Activate (intptr,intptr,intptr,intptr,intptr,intptr) [0x0006a] in /Users/builder/data/lanes/monodroid-lion-bigsplash/0e0e51f9/source/monodroid/src/Mono.Android/src/Java.Interop/TypeManager.cs:141
I/mono    ( 1438): at (wrapper native-to-managed) Java.Interop.TypeManager.n_Activate (intptr,intptr,intptr,intptr,intptr,intptr) <IL 0x0001e, 0x000a3>
I/mono    ( 1438): 

有什么想法吗?

我需要提及的是,当我在 Xamarin.Studio 中打开我的解决方案时,对 Core 库的引用显示为错误。

(- 不兼容的目标框架(.Net Portable Subset(.Net for Windows Store、.Net Framework 4.5、Silverlight 4、Windows Phone 7.5)。)。

这可能只是另一个问题,与异常无关。

【问题讨论】:

  • 已更新以包含完整的堆栈跟踪。

标签: c# xamarin xamarin.android mvvmcross portable-class-library


【解决方案1】:

当我遇到同样的问题时,这对我有用:

当我更新 mvvmCross 时,我仍然使用旧版本的 Xamarin,它使用的是旧版本的 monodroid。更新 Xamarin(新版本使用 monodroid 3)为我解决了这个问题。

希望对你有帮助

【讨论】:

    【解决方案2】:

    问题与我安装的 Hot Tuna Starter 包的版本有关。我安装了 3.0.12 版。

    当我将位于 packages\MvvmCross.HotTuna.MvvmCrossLibraries.3.0.12\lib\MonoAndroid16 的 Cirrious.MVVM 和 Cirrious.MVVM.Droid dll 替换为 Hot Tuna Starter Pack V3.0.9 中的 dll 时,一切开始正常. (我还测试了 3.0.4 也很好用)

    我没有测试 V3.0.10 和 v3.0.11。我还测试了 v 3.0.13 BETA,但它仍然坏了。

    【讨论】:

    • v3.0.9 到今天的主要区别是 xamarin.android 版本的变化 - 到使用 mono3 的新版本 - 这是 xamarin 的“稳定”。您使用的是什么 xamarin 版本?
    【解决方案3】:
    1. 您使用的是来自 stable 分支的最新 Visual Studio 2012 和 Xamarin 吗?

    2. 重要提示:在 Visual Studio 中,转到左侧的工具菜单 \ 扩展和更新 \ 更新选项卡,确保您拥有最新的 NuGet 管理器。

    3. 我建议您重新开始一个新的测试项目,并按照以下步骤操作:

      a) 创建一个名为 MyApp.Droid 的新 Android 应用程序和一个新的 PCL 项目 MyApp.Core(目标为 '.NET Framework 4.5' 和 'Windows Phone 7.5 及更高版本' - 这些是最低框架版本, MVVMCross 适用于)

      b) 添加 MyApp.Core 作为对 MyApp.Droid 的项目引用

      c) 使用 NuGet,安装“MVVMCross Hot Tuna Starter Pack”。确保选择了 stable 分支(NuGet 窗口顶部有一个组合框)

      一切都应该编译并运行良好。

    【讨论】:

    • 谢谢 OpCoder。这些是我遵循的确切步骤,但正如其他人所说的“你的电脑里有龙”。我终于通过用旧版本替换 Cirrious 二进制文件解决了这个问题(不是 Hot Tuna Starter 包当前安装的 3.0.12 版本)。
    • 没有理由放置旧版本。你应该使用最后一个稳定的。你的目标是错误的框架
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    • 2016-07-27
    • 1970-01-01
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多