我试图使用MSBuild.Community.Tasks.Unzip提取压缩文件(* .zip)。
但是,由于我的压缩文件包含一些大小为0 KB的文件,因此它失败并出现以下错误:
error MSB4018: The "Unzip" task failed unexpectedly.
System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: length
at ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputBuffer.ReadClearTextBuffer(Byte[] outBuffer, Int32 offset, Int32 length)
at ICSharpCode.SharpZipLib.Zip.ZipInputStream.BodyRead(Byte[] b, Int32 off, Int32 len)
at ICSharpCode.SharpZipLib.Zip.ZipInputStream.InitialRead(Byte[] destination, Int32 offset, Int32 count)
at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractFileEntry(ZipEntry entry, String targetName)
at ICSharpCode.SharpZipLib.Zip.FastZip.ExtractZip(String zipFileName, String targetDirectory, Overwrite overwrite, ConfirmOverwriteDelegate confirmDelegate, String fileFilter, String directoryFilter)
at MSBuild.Community.Tasks.Unzip.Execute()
at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask, Boolean& taskResult)
我的输出文件夹中不需要这些文件。因此,如果可能的话,它甚至可以被排除在提取之外。
高度赞赏任何解决此问题的想法?
使用MSBuild.Community.Tasks.Unzip在提取期间有没有办法排除这些文件?
答案 0 :(得分:0)
此问题是由我使用的MSBuild.Community.Tasks的旧版本(1.2.0.306)引起的。这是在执行解压缩任务时引用ICSharpCode.SharpZipLib.dll版本0.84。此问题是ICSharpCode.SharpZipLib.dll版本0.84中已知的bug,它已在0.86版本中修复。
现在,我将MSBuild.Community.Tasks升级到版本1.4.0.42,并且它正常工作。所以这解决了我的问题。