我刚尝试将我的一个Windows库导入Xamarin安卓应用,并收到以下错误:
加载程序集时出现异常:System.IO.FileNotFoundException: 无法加载程序集'System.Web.Extensions,Version = 4.0.0.0, Culture = neutral,PublicKeyToken = 31bf3856ad364e35'。也许它没有 存在于Mono for Android个人资料中?文件名: 'System.Web.Extensions.dll'在 Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference 参考,ReaderParameters参数)at Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences(ICollection`1 程序集,AssemblyDefinition程序集,布尔topLevel)at Xamarin.Android.Tasks.ResolveAssemblies.Execute()App7
即使我尝试手动将引用添加到应用程序中,它仍然无效。
这个库是否有mono支持(我发现它非常有用)System.Web.Extensions
。
任何变通办法都会非常感激,因为我不想重写工作dll或停止在xamarin中开发。
PS:我尝试手动添加所有必需的dll,最终导致部署错误而没有任何描述。
答案 0 :(得分:1)
System.Web在Web服务器的上下文之外并没有多大意义,因此从Xamarin的角度来看,我怀疑它是否会被实现。
您可以尝试添加它:
System.Web.dll inn项目引用,点击编辑 - >净装配 - >浏览,转到root - Library / Frameworks / Mono.Framework / Versions / 4.2.2 / lib / mono / 4.5 / System.Web
或者,您可能需要查看您尝试导入的外部库,以查看是否可以删除任何引用并重建。
例如,它可能正在使用包含System.Web
的log4net答案 1 :(得分:0)
好吧,我似乎找到了一个答案并将其发布以便帮助其他人。
首先,我尝试了VS建议的所有dll引用,以免更改我的代码的任何部分。添加超过20个引用后失败。我花了一个多小时的时间。
其次我按照@jaymarvels的建议决定从nuget检查一个库。我和Json.net一起改变了一行代码,如下所示:
之前的代码:
var serializer11 = new System.Web.Script.Serialization.JavaScriptSerializer();
T dc1 = serializer11.Deserialize<T>(json);
要编码:
T dc1 = Newtonsoft.Json.JsonConvert.DeserializeObject<T>(json);
然后项目开始没有任何问题。我对图书馆速度有一些考虑,但对于我的项目,速度并不是必不可少的,所以我很乐意使用它一段时间。