我刚刚在我的Xamarin Forms项目中将FSharp.Core升级到版本4.1.0。在实例化使用F#表达式的类时,我收到运行时错误。
异常消息是
无法加载文件或程序集 '/storage/emulated/0/Android/data/Astrid.Mobile.Droid/files/.__覆盖__ / en-US / FSharp.Core.resources.dll' 或其中一个依赖
并且堆栈跟踪是
at(wrapper managed-to-native)System.Reflection.Assembly:LoadFrom System.Reflection.Assembly.LoadFrom(System.String。(string,bool) assemblyFile)[0x00000] in /Users/builder/data/lanes/4009/f3074d2c/source/mono/mcs/class/corlib/System.Reflection/Assembly.cs:532 在System.Reflection.Assembly.InternalGetSatelliteAssembly上 (System.String name,System.Globalization.CultureInfo culture, System.Version版本,System.Boolean throwOnFileNotFound, System.Threading.StackCrawlMark&安培; stackMark)[0x000c5] in /Users/builder/data/lanes/4009/f3074d2c/source/mono/mcs/class/corlib/System.Reflection/Assembly.cs:511
令人担忧的是,当我在谷歌上寻找FSharp.Core.resources.dll时,诈骗者已经把它拿走了。我得到的只是一堆网站,只要我下载并运行他们的“修复”,就可以解决问题。
此问题是否有修复或解决方法,不涉及下载特洛伊木马?
另外,有谁知道FSharp.Core.resources.dll甚至是什么?看起来Xamarin错误地将FSharp.Core.dll误认为是可本地化的程序集,并尝试加载相关的资源项目。
更新
在mscorlib中如此深入,有一个名为ManifestBasedResourceGroveler
的类,其GrovelForResourceSet
方法通过ResourceManager.GetString()
由FSharp.Core.dll中的各种类调用。
它可能不是驱动Android的mscorlib的实际版本,但是从参考源https://referencesource.microsoft.com/#mscorlib/system/resources/manifestbasedresourcegroveler.cs可以清楚地看出GrovelForResourceSet
正在尝试加载不存在的文件FSharp.Core。 resources.dll。不清楚的是为什么它似乎认为这个文件存在,以及我如何说服系统它不存在。