5

プロジェクトの dll ファイルを参照しました。SevenZipSharp.dll

次に、Form1 の上部に次を追加しました。

using SevenZip;

次に、ボタン クリック イベントから呼び出す関数を作成しました。

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

ブレークポイントを使用しましたが、エラーは次の行にあります。

compressor.CompressDirectory(source, output);

しかし、私はエラーが発生しています:

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

4 に答える 4

2

OP の投稿の最後で述べたように、ライブラリ パスを設定する必要があります。しかし、環境の独自性を克服するために、いつでもリフレクションを使用して DLL へのパスを設定できます。7z.dll がプロジェクトの bin フォルダーにある限り、これによりそのパスが取得されます。

これを using ステートメントに追加します。

using System.Reflection;

次に、次のようにパスを設定します。

SevenZipCompressor.SetLibraryPath(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "7z.dll"));
于 2016-08-11T10:49:16.033 に答える
1

7z.dll (32ビット版)を作業ディレクトリにコピーします。この例外は、64 ビット版でスローされることがあります。

于 2016-10-23T17:59:01.590 に答える
0

This is working well & max compress method ever.the bast solution.

  • give writing access to the output folder or drive.
  • install 7 zip software into your pc

Function:

private void Compress() 
{

    string source = "E:\\w";
    string output = "E:\\3.7z";

    string programFiles1 = "C:\\Program Files\\7-Zip\\7z.dll";

    if (File.Exists(programFiles1))
    {
        SevenZipExtractor.SetLibraryPath(programFiles1);
    }

    SevenZipCompressor compressor = new SevenZipCompressor();
    compressor.ArchiveFormat = OutArchiveFormat.SevenZip;
    compressor.CompressionMode = SevenZip.CompressionMode.Create;
    compressor.TempFolderPath = System.IO.Path.GetTempPath();
    compressor.CompressDirectory(source, output);

}
于 2015-11-13T13:14:44.247 に答える