So extrahieren Sie den Inhalt einer Zip-Datei in einen Ordner in .NET 4.5

Die Antwort auf die folgende Frage scheint zu skizzieren, wie Dateien mithilfe des System.IO.Commpression.ZipFile.ExtractToDirectory-Methodenaufrufs extrahiert werden. "ZipFile" scheint in .NET 4.5 nicht zu existieren, wenn ein Verweis auf System.IO.Compression hinzugefügt wird. Wie kann ich Dateien aus einer * .zip-Datei in .NET 4.5 extrahieren?

Wie entpacke ich alle .Zip-Dateien aus dem Ordner mit C # 4.0 und ohne OpenSource Dll?

Dies scheint zu zeigen, wie man Dateien komprimiert. Aber ich suche das Gegenteil.

Zippen von Dateien in .NET 4.5

Auch diese Frage verweist auf "ZipFile" im Quellcode. Aber ich kann diese Klasse nicht finden.

Wie extrahiere ich nur das spezifische Verzeichnis aus einem Zip-Archiv in C # .NET 4.5?

BEARBEITEN

Notice wie 7z.exe (von 7zip Paket) nicht funktioniert hat. Es muss ein Konflikt mit .NET und 7zip bestehen. ZipFile scheint nun gut zu funktionieren.

private void extract_Click(object sender, EventArgs e)
{
    string exePath = System.Reflection.Assembly.GetExecutingAssembly().Location;
    exePath = @"C:\test";  // path during troubleshooting

    ////var cmd1 = "cd \"" + exePath + "\"";
    ////ExecuteCommand(cmd1, 100, exePath);

    //var cmd2 = "\"" + exePath + "\\7z.exe\" x \"" + exePath + "\\source.zip\"";
    //ExecuteCommand(cmd2, 100, exePath);

    string zipPath = exePath + "\\source.zip";
    string extractPath = exePath;

    // needed explicit reference to System.IO.Compression.FileSystem
    ZipFile.ExtractToDirectory(zipPath, extractPath);


}

private static int ExecuteCommand(string command, int timeout, string dir)
{
    var processInfo = new ProcessStartInfo("cmd.exe", " /C " + command)
    {
        CreateNoWindow = true,
        UseShellExecute = false,
        WorkingDirectory = dir,
    };

    var process = Process.Start(processInfo);
    process.WaitForExit(timeout);
    var exitCode = process.ExitCode;
    process.Close();
    return exitCode;
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage