我正在尝试使用SevenZipSharp压缩一些文件,但收到错误

Dan*_*est 5 c# 7zip

我在项目中引用了dll文件: SevenZipSharp.dll

然后在Form1的顶部我添加:

using SevenZip;
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个我通过按钮单击事件调用的函数:

private void Compress()
{
            string source = @"C:\Users\bout0_000\AppData\Local\Diagnostic_Tool_Blue_Screen\Diagnostic Tool Blue Screen\SF_02-08-13";
            string output = @"D:\Zipped.zip";

            SevenZipCompressor compressor = new SevenZipCompressor();
            compressor.ArchiveFormat = OutArchiveFormat.Zip;
            compressor.CompressionMode = CompressionMode.Create;
            compressor.TempFolderPath = System.IO.Path.GetTempPath();
            compressor.CompressDirectory(source, output);
}
Run Code Online (Sandbox Code Playgroud)

我使用了一个断点,错误就行了:

compressor.CompressDirectory(source, output);
Run Code Online (Sandbox Code Playgroud)

但我收到一个错误:

无法加载7-zip库或内部COM错误!消息:DLL文件不存在

但是我已经引用了dll,为什么会出现这个错误呢?我该如何解决?

解决了这个问题:

private void Compress()
{
            string source = @"C:\Users\bout0_000\AppData\Local\Diagnostic_Tool_Blue_Screen\Diagnostic Tool Blue Screen\SF_02-08-13";
            string output = @"D:\Zipped.zip";
            SevenZipExtractor.SetLibraryPath(@"C:\Program Files\7-Zip\7z.dll");
            SevenZipCompressor compressor = new SevenZipCompressor();
            compressor.ArchiveFormat = OutArchiveFormat.Zip;
            compressor.CompressionMode = CompressionMode.Create;
            compressor.TempFolderPath = System.IO.Path.GetTempPath();
            compressor.CompressDirectory(source, output);
}
Run Code Online (Sandbox Code Playgroud)

Vau*_*lts 3

您可能缺少所需的内部 COM 组件。如果您检查 InnerException,它应该能让您很好地了解缺少什么。将它们复制到您的工作目录中,您就应该完成设置了。