MSBuild.Community.Tasks.Unzip在内容文件上失败,大小为0 KB

时间:2013-07-04 12:12:08

标签: msbuild unzip sharpziplib msbuildcommunitytasks

我试图使用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在提取期间有没有办法排除这些文件?

1 个答案:

答案 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,并且它正常工作。所以这解决了我的问题。