invalidilcodeSystem.IO.Compression.ZipFile.OpenRead()methodbodyisempty实现Android应用程序。在我的PCL中,我有一个Zip实用程序类和以下方法:publicNoDataResponseUnCompressZipFile(stringpath,stringfilename){NoDataResponseresponse=newNoDataResponse();StringBuildersb=newStringBuilder();sb.AppendLine(string.Format("rnUnzipping'{0}'in'{1}'folder...",filename,path));尝试{使用(ZipArchivearchive=ZipFile.Open(filename,ZipArchiveMode.Read)){foreach(System.IO.Compression.ZipArchiveEntryentryinarchive.Entries){if(entry.FullName.EndsWith(".txt",StringComparison.OrdinalIgnoreCase)){System.IO.Compression.ZipFile.ExtractToDirectory(文件名,路径);休息;}}}response.IsCallSuccessful=true;sb.AppendLine(string.Format("rnFinishedUnzippingfile{0}.rn",filename));response.BusinessEntityMessage=sb.ToString();}catch(Exceptionex){response.IsCallSuccessful=false;response.BusinessEntityMessage="rn解压错误:"+ex.Message+"rn";}返回响应;我的方法中的ZipFile类型是System.IO.Compression(System.IO.Compression.FileSystem命名空间)当我执行该方法时,出现以下错误:System.InvalidProgramException:System.IO.Compression.ZipFile中的无效IL代码:Open(字符串,System.IO.Compression.ZipArchiveMode):方法主体为空.在HHT.Core.Globals.ZipUtility.UnCompressZipFile(System.Stringpath,System.Stringfilename)[0x00033]在c:SandboxHHT-ANDROIDHHTAppHHT.CoreGlobalsZipUtility.cs:32我不确定缺少什么因为相同的代码在PCL内部之前可以完美运行。我还尝试使用依赖注入(N=31slodge)从我的DROIDUI项目运行相同的类,但仍然出现相同的错误。如有任何意见或想法,我将不胜感激。听起来您正在为Android设备部署参考程序集(参考程序集仅用于编译,因此不包含IL)。您使用的是什么版本的System.IO.Compression?我假设您使用的是Microsoft.Bcl.CompressionNuGet包?我们的NuGet包不提供Android实现。事实上,我们只为WindowsPhone提供一种实现——对于所有其他平台,我们使用平台附带的实现。我不确定Xamarin是否支持System.IO.Compression.dll(包括ZipArchive)。它之前可能有效的原因是因为您在安装NuGet包后重新定位了PCL。根据您目前的发现,我敢打赌您可以通过将Xamarin.AndroidSystem.IO.Compression.dll从Mac安装程序复制到:C:\ProgramFiles(x86)\ReferenceAssemblies\MicrosoftFramework\MonoAndroidv1来修复错误.0Xamarin.AndroidWindows安装程序当前(意外)缺少此程序集。已针对此问题提交了一个错误,因此程序集在未来的版本中应该默认存在。如果这不起作用,请务必报告结果,以便我们进一步调查!以上就是C#学习教程:invalidilcodeSystem.IO.Compression.ZipFile.OpenRead()methodbodyisempty分享的所有内容,如果对大家有用,需要详细了解C#学习教程,希望各位多多关照~本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
