c# - 使用 SevenZipSharp 压缩和提取

标签 c# 7zip

我正在尝试使用 SevenZipSharp 压缩和提取文件,但出现以下错误:

Can not load 7-zip library or internal COM error! Message: failed to load library.

我的代码:

string extractFrom = @"C:\Test\Test.7z";
string extractTo = @"C:\Test2";

string compressFrom = @"C:\Test2";
string compressTo = @"C:\Test\Test2.7z";

SevenZipBase.SetLibraryPath(@"C:\Program Files\7-Zip\7z.dll");

SevenZipCompressor compressor = new SevenZipCompressor();
compressor.CompressionMode = CompressionMode.Create;
compressor.TempFolderPath = Path.GetTempPath();
compressor.ArchiveFormat = OutArchiveFormat.SevenZip;
compressor.CompressDirectory(compressFrom, compressTo);//Error

SevenZipExtractor extractor = new SevenZipExtractor(extractFrom);
extractor.ExtractArchive(extractTo);//Error

错误在:

compressor.CompressDirectory(compressFrom, compressTo);

在:

extractor.ExtractArchive(extractTo);

我该如何解决这个问题?

最佳答案

最明显的答案:dll 不在给定的路径中。

但我假设您已经尝试过,但如果您混合使用 32 位和 64 位应用程序,这也是一个已知问题。因此,如果您的应用程序运行 32 位并且 7zip 安装为 x64,则会抛出此错误。

另见:A reference to .dll could not be added. Please make sure that the file is accessible, and that it is a valid assembly or COM component

关于c# - 使用 SevenZipSharp 压缩和提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33119417/

相关文章:

c# - 我应该如何在 Controller 中模拟 SignalR HubContext 以进行单元测试?

c# - 如何使用 EF 获取新行中所有必填字段的名称?

c# - 在 Blazor 中本地化日期时间(和数字)

windows - Windows Server 2008 64 位上的 7-Zip 执行权限

macos - 如何在 Mac 上将 7zip 文件拆分为多个较小的文件

command-line - 仅使用 7z 压缩文件而不保留路径

c# - 类型约束 C# 泛型的无效转换

C# 调用返回指针的 C++ 方法。解释内存管理

python - 仅提取特定子文件夹 7zip

tomcat - PowerShell - 创建 Zip 文件留下零字节文件