Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将zip文件内容解压缩到.NET4.5中的文件夹中_C#_Zip_.net 4.5_7zip_Compression - Fatal编程技术网

C# 如何将zip文件内容解压缩到.NET4.5中的文件夹中

C# 如何将zip文件内容解压缩到.NET4.5中的文件夹中,c#,zip,.net-4.5,7zip,compression,C#,Zip,.net 4.5,7zip,Compression,以下问题的答案似乎概述了如何使用System.IO.Commpression.ZipFile.ExtractToDirectory方法调用提取文件。在添加对System.IO.Compression的引用时,.NET4.5中似乎不存在“ZipFile”。如何从.NET 4.5中的*.zip文件中提取文件 这似乎显示了如何压缩文件。但我正在寻找相反的结果 甚至这个问题在源代码中也引用了“ZipFile”。但我似乎找不到这门课 编辑: 请注意7z.exe(来自7zip包)是如何不起作用的。必

以下问题的答案似乎概述了如何使用System.IO.Commpression.ZipFile.ExtractToDirectory方法调用提取文件。在添加对System.IO.Compression的引用时,.NET4.5中似乎不存在“ZipFile”。如何从.NET 4.5中的*.zip文件中提取文件

这似乎显示了如何压缩文件。但我正在寻找相反的结果

甚至这个问题在源代码中也引用了“ZipFile”。但我似乎找不到这门课

编辑: 请注意7z.exe(来自7zip包)是如何不起作用的。必须与.NET和7zip冲突。ZipFile现在似乎工作正常

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

您需要添加对
System.IO.Compression.FileSystem
程序集的引用

每个库类都有一个MSDN页面。这是


请注意顶部部分中的名称空间和程序集规范

您需要添加对
System.IO.Compression.FileSystem
程序集的引用

每个库类都有一个MSDN页面。这是



请注意顶部部分中的名称空间和程序集规范

有什么问题吗?我想您需要一个对
System.IO.Compression.FileSystem
使用系统的参考;使用System.IO;使用系统IO压缩petelids-文件系统得到红色的扭曲标记。我的错误是“当前上下文中不存在名称'ZipFile'。我使用的是Visual Studio 2013社区版,我的项目类型是使用.NET 4.5的Windows窗体应用程序。卫理公会-正式注明;仍在接收error@MacGyver-是的,
ZipFile
类位于名称空间System.IO.Commpression中,但它位于assembly System.IO.Compression.FileSystem中,因此您需要对System.IO.Compression.FileSystem.dll的引用才能使用该类有什么问题和/或问题..?我想您需要使用制度;使用System.IO;使用系统IO压缩petelids-文件系统得到红色的扭曲标记。我的错误是“当前上下文中不存在名称'ZipFile'。我使用的是Visual Studio 2013社区版,我的项目类型是使用.NET 4.5的Windows窗体应用程序。卫理公会-正式注明;仍在接收error@MacGyver-是的,
ZipFile
类位于名称空间System.IO.Commpression中,但它位于assembly System.IO.Compression.FileSystem中,因此您需要对System.IO.Compression.FileSystem.dll的引用才能使用该类有时让我困惑的是如何判断是否需要显式添加库(作为.NET引用)如果是隐式的,则表示“开箱即用”而且只需要一个简单的使用声明…?这取决于您开始使用的模板。他们会根据您最可能需要的模板进行有根据的猜测。对于其余的部分,这些“标准”程序集都没有什么特殊之处。请参阅我问题中的编辑。7zip最初不起作用。.NET在启动p时必须与某些内容冲突来自.NET的进程与来自命令行的进程。这是一个完全不同的问题。通过查找现有进程的步骤,并在需要时发布新的进程。Henk,我发现如果您的C#library通过在源代码中启动进程从命令行调用命令,那么该命令(exe)是一个编译C++程序,引用C++管理的DLL(使用Extn关键字),.NET不允许这样做。但是,如果第二个C#应用程序源代码的源代码在第一个C#应用程序的实际源代码中,这是允许的。我现在有两个这样的例子。我发现这很有趣。有时让我困惑的是如何判断是否需要显式添加库(作为.NET引用)当它是隐含的,意思是“开箱即用”而且只需要一个简单的使用声明…?这取决于您开始使用的模板。他们会根据您最可能需要的模板进行有根据的猜测。对于其余的部分,这些“标准”程序集都没有什么特殊之处。请参阅我问题中的编辑。7zip最初不起作用。.NET在启动p时必须与某些内容冲突来自.NET的进程与来自命令行的进程。这是一个完全不同的问题。通过查找现有进程的步骤,并在需要时发布新的进程。Henk,我发现如果您的C#library通过在源代码中启动进程从命令行调用命令,那么该命令(exe)是一个编译C++程序,引用C++管理的DLL(使用Extn关键字),.NET不允许这样做。但是如果第二C应用程序源代码的源代码在第一C应用程序的实际源代码里面,这是允许的。我现在有两个例子。我发现它很有趣。