如何使用 Squid 在 C# 上压缩和解压缩文件-Box.SevenZipSharp 执行失败错误
How to Zip and UnZip Files on C# using Squid-Box.SevenZipSharp Execution has failed error
我最近尝试使用 NuGet 压缩和解压缩文件 "Squid-Box.SevenZipSharp"
但是我无法压缩它们,错误可能来自 dll 库。我尝试使用 .dll 下载 32 位和 64 位的 7zip,但错误是一样的,我想不出有什么可做的。
private void Compress(string source, string output)
{
/*32-bits version*/ string path = Directory.GetCurrentDirectory() + @"-7z.dll";
//64-bits version string path = Directory.GetCurrentDirectory() + @"-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
我最近尝试使用 NuGet 压缩和解压缩文件 "Squid-Box.SevenZipSharp" 但是我无法压缩它们,错误可能来自 dll 库。我尝试使用 .dll 下载 32 位和 64 位的 7zip,但错误是一样的,我想不出有什么可做的。
private void Compress(string source, string output)
{
/*32-bits version*/ string path = Directory.GetCurrentDirectory() + @"-7z.dll";
//64-bits version string path = Directory.GetCurrentDirectory() + @"-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