【问题标题】:C# .Net 3.5 Unzip zip file no 3rd partyC# .Net 3.5 解压缩 zip 文件没有第 3 方
【发布时间】:2013-05-22 14:55:49
【问题描述】:

我正在用 .NET 3.5 编写一个 Winform 应用程序,我需要解压缩一个 .rar 或 .zip 文件。
我找到了很多东西,但我没有找到任何第 3 方。 我无法更改为 .NET 4 或 .NET 4.5。

感谢您的帮助。 霍伯特

【问题讨论】:

标签: c# winforms .net-3.5 zip unzip


【解决方案1】:

如果只需要解压zip文件,则不需要添加外部第三方库。

您只需要在 Visual Studio 的引用管理器中的 COM 选项卡中添加对 Microsoft Shell 控件和自动化 的引用。

private static void Unzip(String sourceFile,String destination) 
{
    Shell32.ShellClass sc = new Shell32.ShellClass();
    Shell32.Folder SrcFlder = sc.NameSpace(sourceFile);
    Shell32.Folder DestFlder = sc.NameSpace(destination);
    Shell32.FolderItems items = SrcFlder.Items();
    DestFlder.CopyHere(items, 20);          
}

有了这个,您不必在您的应用程序中分发任何额外的 dll 文件

【讨论】:

  • 嗨@arturn,我在指向 .NET 3.5 的 WPF Windows 应用程序中遇到以下异常。任何帮助,将不胜感激。无法将“Shell32.ShellClass”类型的 COM 对象转换为接口类型“Shell32.IShellDispatch6”。此操作失败,因为 IID 为“{286E6F1B-7113-4355-9562-96B7E9D64C54}”的接口的 COM 组件上的 QueryInterface 调用因以下错误而失败:不支持此类接口(来自 HRESULT 的异常:0x80004002 (E_NOINTERFACE)) . P.S:我的应用配置了 [STAThread] 属性。
【解决方案2】:

怎么样 http://www.codeproject.com/Articles/645214/Compress-Decompress-Zip-Files-w

不是最好的解决方案,但如果您需要基本的压缩/解压缩功能,效果很好。

免责声明:我是文章的作者。

【讨论】:

    【解决方案3】:

    .NET 框架不支持 .RAR 文件,也不支持Zip files until .NET 4.5

    如果您想在 .NET 3.5 中支持 .ZIP(或 .RAR),则需要第三方解决方案。例如,DotNetZip 库支持 .NET 3.5,并且完全可以处理 .ZIP 文件。

    有支持RAR的商业产品,例如Chilkat RAR

    【讨论】:

      【解决方案4】:

      实际上,.NET 3.5 使用 DeflateStream 生成 .zip 文件。您必须自己处理标头,但 PKWare 已发布规范,您可以创建结构并使用 Streams。

      不需要第三方代码……但是,您必须以更传统、更老派的方式来处理它。他们不会完全解压缩自己。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-10
        • 1970-01-01
        • 1970-01-01
        • 2020-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多