簡體   English   中英

如何使用 Squid-Box.SevenZipSharp 執行 C# 上的 Zip 和解壓縮文件失敗錯誤

[英]How to Zip and UnZip Files on C# using Squid-Box.SevenZipSharp Execution has failed error

我最近嘗試使用 NuGet "Squid-Box.SevenZipSharp"壓縮和解壓縮文件但是我無法壓縮它們,錯誤可能來自 dll 庫。 我試過下載 32 位和 64 位的 7zip,同時使用。dll 但錯誤是一樣的,我想不出任何辦法。

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 位 dll 時,proyect 設置為 Debug x86。 當我使用 64 位 dll 時,proyect 設置為 Debug x64。

兩種情況下的錯誤如下:

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

我真的很感謝你花時間在這件事上,在此先感謝。

您收到的錯誤代碼 (0x80004001) 對應於錯誤“未實現” - 它來自您嘗試使用.zip 格式不支持的 CompressionMethod 的事實。

除非您有特定要求,否則我建議使用CompressionMode.Default - 否則以下適用於 .zip 格式:

CompressionMethod.Copy

CompressionMethod.Deflate

CompressionMethod.Deflate64

CompressionMethod.BZip2

CompressionMethod.Lzma

CompressionMethod.Ppmd

這就是我從 github 上的 squid-box 得到的答案,只需將CompressionMethod.Lzma2更改為CompressionMethod.Lzma

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM