Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin.android apk中包含的mscorlib.dll中缺少方法_Xamarin.android - Fatal编程技术网

Xamarin.android apk中包含的mscorlib.dll中缺少方法

Xamarin.android apk中包含的mscorlib.dll中缺少方法,xamarin.android,Xamarin.android,我在Monodroid中有一个模糊的应用程序,我的问题是apk中包含的mscorlib程序集没有实现System.String.Intern()方法,我的应用程序也不工作 我的混淆器调用这个方法来混淆字符串,我得到一个MissingMethodException。此方法不存在于apk中包含的程序集中,但奇怪的是,它存在于myproject/obj/release/assemblies/mscorlib.dll中 这些文件完全不同。如果我将文件myproject/obj/release/assem

我在Monodroid中有一个模糊的应用程序,我的问题是apk中包含的mscorlib程序集没有实现System.String.Intern()方法,我的应用程序也不工作

我的混淆器调用这个方法来混淆字符串,我得到一个MissingMethodException。此方法不存在于apk中包含的程序集中,但奇怪的是,它存在于myproject/obj/release/assemblies/mscorlib.dll中

这些文件完全不同。如果我将文件myproject/obj/release/assemblies/mscorlib.dll放在apk中,它可以工作,但这个解决方案是一个糟糕的解决方案,因为应用程序在其他点失败,因为dll的更改导致TypeLoadException

有人能告诉我为什么monodroid使用mscorlib简化文件和替代解决方案吗

谢谢

有人能告诉我为什么monodroid使用mscorlib简化文件和替代解决方案吗

较小的文件用于将应用程序大小减少。链接可能很脆弱,因为链接器不跟踪运行时行为。例如,使用
Type.GetType(“Foo”)
将不会保留类型
Foo
,因此如果没有其他引用,链接器可能会将其删除

obj\Release\assemblies\mscorlib.dll
是源程序集
obj\Release\android/assets/mscorlib.dll
是链接的(较小的)程序集,包含在
.apk


如果混淆器直接使用
String.Intern()
,这可能表明链接器中存在错误。但是,如果您的模糊处理程序正在使用反射(例如
Type.GetMethod()
),那么这将是预期的行为。要修复它,请显式使用
String.Intern()
,以便保留该方法。

如何使用
String.Intern()
?除非您通过反射调用它(因此链接器不会“看到”您的使用),否则它会被删除似乎很奇怪。我在Reflector中看到,apk中包含的程序集mscorlib.dll不使用String.Intern()方法。似乎每个.net模糊处理程序都使用此调用来模糊字符串。你能验证一下mono apk是否包含这种方法吗?谢谢你是对的。如果显式使用它,链接的程序集将包含此方法,并且它可以工作。非常有用。谢谢