首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Squid-Box.SevenZipSharp在C#上压缩和UnZip文件执行失败错误

如何使用Squid-Box.SevenZipSharp在C#上压缩和UnZip文件执行失败错误
EN

Stack Overflow用户
提问于 2021-04-25 07:31:24
回答 1查看 160关注 0票数 0

我最近尝试过使用NuGet "Squid-Box.SevenZipSharp"压缩和解压文件,但是我不能压缩它们,错误可能来自于dll库。我尝试下载32位和64位的7zip,使用两个.dll,但错误是相同的,我想不出任何办法。

代码语言:javascript
运行
复制
private void Compress(string source, string output)
        {
/*32-bits version*/  string path = Directory.GetCurrentDirectory() + @"\32-7z.dll";
//64-bits version    string path = Directory.GetCurrentDirectory() + @"\64-7z.dll";
            
            SevenZipCompressor compressor = new SevenZipCompressor();
            compressor.ArchiveFormat = OutArchiveFormat.Zip;
            compressor.TempFolderPath = Path.GetTempPath();
            compressor.CompressionMode = SevenZip.CompressionMode.Create;
            compressor.CompressionLevel = SevenZip.CompressionLevel.Fast;
            compressor.CompressionMethod = CompressionMethod.Lzma2;
            compressor.ZipEncryptionMethod = ZipEncryptionMethod.Aes256;

            var assemblyDllPath = compressor.TempFolderPath + "32-7z.dll";
          //var assemblyDllPath = compressor.TempFolderPath + "64-7z.dll";
            File.Copy(path, assemblyDllPath, overwrite: true);
            SevenZipExtractor.SetLibraryPath(path);
            
            compressor.CompressDirectory(@"A:\C#\random", @"A:\C#\empty\archive.zip", "password");

        }

当使用32位动态链接库时,proyect被设置为调试x86。当使用64位动态链接库时,proyect被设置为调试x64。

在这两种情况下都会出现以下错误:

代码语言:javascript
运行
复制
SevenZip.SevenZipException
  HResult=0x80131500
  Message = Execution has failed due to an internal SevenZipSharp issue (0x80004001 / -2147467263).
Please report it to https://github.com/squid-box/SevenZipSharp/issues/, include the release number, 7z version used, and attach the archive.
  Source = SevenZipSharp

我真的很感谢你花时间在这上面,提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-26 08:54:08

您得到的错误代码(0x80004001)对应于错误"Not Implemented“-这是因为您试图使用.zip格式不支持的CompressionMethod。

除非您有特定的要求,否则我建议您使用CompressionMode.Default -否则,请使用.zip格式:

CompressionMethod.Copy

CompressionMethod.Deflate

CompressionMethod.Deflate64

CompressionMethod.BZip2

CompressionMethod.Lzma

CompressionMethod.Ppmd

这就是我从github上的squid-box得到的答案,只需将CompressionMethod.Lzma2更改为CompressionMethod.Lzma

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67248385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档