如何修复尝试运行Mono for Android应用程序时发生的丢失的mscorlib.dll错误?

时间:2011-12-26 08:42:37

标签: mono xamarin.android mscorlib

在MonoDevelop中,当针对模拟器编译和运行针对Android开发的应用程序时,应用程序编译然后立即在模拟器中崩溃并使用以下应用程序输出...

E/mono    (  225): The assembly mscorlib.dll was not found or could not be loaded.
E/mono    (  225): It should have been installed in the `/home/jon/Development/xamarin/mono/BUILD/armeabi/install/lib/mono/2.0/mscorlib.dll' directory.

请记住,我不是Jon,所以我甚至不知道它在哪里获得/ home / jon路径配置。虽然我已经在互联网上找到了其他类似但最终无关的搜索路径,所以我想这是其他开发机器上的路径。

mscorlib.dll确实在我的机器上。位于这里......

/Developer/MonoTouch/usr/lib/mono/2.1 /

在这里......

/Developer/MonoAndroid/usr/lib/mono/2.1 /

我已尝试定位各种Android SDK环境(目前为2.3,模拟器目前也在2.3 SDK环境下运行)。

我在Mac OSx 10.7.2上。使用最新版本的MonoDevelop,Mono和Mono for Android。我也安装了最新的MonoTouch,如果值得的话,iPhone应用程序可以正常编译。

我能找到最接近这个问题的提示是...... http://phonicuk.com/Forums/ViewThread.aspx?tid=401

我已尝试重新安装Mono和Mono for Android,但诚然没有尝试在重新安装之前完全卸载。我在文件中搜索/ home / jon路径,认为它必须是某个地方的配置,但无法在任何地方找到它。

我发现了这个...... Mono return error: mono mscorlib.dll was not found

除了一些其他类似的东西,但最终没有什么似乎是一个解决方案。

有什么想法吗?

更新:从jonp下面的答案中的建议看来,确实没有安装Mono.Android.DebugRuntime软件包。到目前为止,我已经尝试了几次MonoAndroid重新安装并尝试完全删除MonoAndroid。我想弄清楚是否有办法手动添加包,但我对此很新。

另一个更新:不知道我为什么不尝试这个,但我创建了一个HelloWorld MonoAndroid应用程序,它工作正常。对于那个编译,编译花了一些时间,我可以看到是否正在设置所需的包,因此必须存在特定解决方案的问题。

1 个答案:

答案 0 :(得分:2)

在设备上安装应用的Debug版本时,会安装三个.apk个文件:

  1. Mono.Android.DebugRuntime,其中包含libmonosgen-2.0.somscorlib.dll
  2. Mono.Android.Plaltform.ApiLevel_N,其中包含Mono.Android.dll的API级N
  3. 您的申请。
  4. 我的猜测是尚未安装Mono.Android.DebugRuntime包。要检查这一点,请运行:

    adb shell pm list packages | grep Mono.Android
    

    我猜它不见了。 : - )

    接下来,为什么会丢失?在MonoDevelop中运行应用程序时,将检查并安装所有必需的软件包。这似乎很奇怪,它不会。您的设备磁盘空间不足吗?

    adb shell df /data
    

    你是如何推出模拟器的?如果您在MonoDevelop中启动,则应该有足够的可用空间来安装所有上述软件包。但是,如果您自己启动它,则默认/data大小为64MB,这不足以支持Debug构建环境。请从MonoDevelop启动模拟器并重新运行您的应用,或launch the emulator so that it has enough free space

    emulator -partition-size 512 -avd YOUR_AVD_NAME