【问题标题】:Compress and Extract with SevenZipSharp使用 SevenZipSharp 压缩和提取
【发布时间】:2015-10-14 07:40:20
【问题描述】:

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

无法加载 7-zip 库或内部 COM 错误!消息:加载库失败。

我的代码:

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);

我该如何解决这个问题?

【问题讨论】:

    标签: c# 7zip


    【解决方案1】:

    最明显的答案: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

    【讨论】:

    • 我尝试了 32 位和 64 位,但都无法正常工作。
    • SevenZipSharp 基本上只是 COM 对象的包装器 - 因为会抛出该错误,我建议您从引用的 SO 问题中阅读答案(和链接)
    • 我刚刚发现我的错误:我使用 .Net 4.5.2 但 SevenZipSharp 只兼容 .Net 4.0。
    • @daniel59:我也使用 SevenZipSharp,但我的项目使用 .Net 4.5.2,所以在您的情况下可能有其他原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    • 2016-08-30
    相关资源
    最近更新 更多