如何从C#控制台应用程序创建7-Zip存档?我需要能够提取档案使用常规,广泛可用的7-Zip计划.


下面是我的结果,以及回答这个问题的例子

  • "炮击"到7z.这是最简单、最有效的方法,我可以证实这一点.作为workmad3 mentions,我只需要保证7z.exe安装在所有目标机器上,这是我可以保证的.
  • 7Zip in memory compression-这指的是在将cookie发送到客户端之前将其"在内存中"压缩;这种方法似乎有一定的前景.包装器方法(包装LZMA SDK)返回类型byte[].当我将byte[]数组写入文件时,我不能使用7-Zip(File.7z is not supported archive)解压缩它.
  • 7zSharp包装器(在CodePlex上找到)-它包装了7z exe/LZMA SDK.我从我的应用程序中引用了这个项目,它成功地创建了一些归档文件,但我无法使用常规的7-Zip程序解压这些文件(File.7z is not supported archive).
  • 7Zip SDK aka LZMA SDK-我想我不够聪明,不知道如何使用它(这就是我为什么在这里发布的原因)...有没有任何工作代码示例可以演示如何创建一个7zip存档,该存档可以由常规的7zip程序提取?
  • CodeProject C# (.NET) Interface for 7-Zip Archive DLLs-仅支持从7zip存档中提取...我需要创造它们!
  • SharpZipLib-根据他们的FAQ,SharpZipLib不支持7zip.

推荐答案

如果您可以保证7-zip应用程序将安装在所有目标计算机上(并且位于路径中),则可以通过调用命令行应用程序7z来卸载.这不是最优雅的解决方案,但也是最不费力的.

.net相关问答推荐

尽管有`disable`注释,但未 suppress Pylint语法错误

无法在Ubuntu 22.04.3上运行带有Rider 2023和DotNet-8.0的项目

Docker镜像mcr.microsoft.com/dotnet/aspnet:8.0不能在Windows上构建

.NET 7.0中的UseHttpsRedirection和IIS生产部署

为什么解码后的字节数组与原始字节数组不同?

为什么 GetShortestDayName 返回的名称比预期的短?

正则表达式在空格上拆分,除非在引号中

既然 .NET 有一个垃圾收集器,为什么我们需要终结器/析构器/dispose-pattern?

在 C# 中将字节数组保存为磁盘上的文件的最有效方法是什么?

我什么时候应该在 C# 中使用使用块?

实体框架无法加载指定的元数据资源

如何使用 log4net 记录跟踪消息?

如何在 C# 中将 HTML 转换为文本?

什么是 project.lock.json?

在同一解决方案中引用 2 个不同版本的 log4net

如何使我的托管 NuGet 包支持 C++/CLI 项目?

如何从 WCF REST 方法返回自定义 HTTP 状态代码?

我可以将构造函数参数传递给 Unity 的 Resolve() 方法吗?

如何卸载Microsoft .NET Core 1.0.0 RC2 - VS 2015 Tooling Preview 1?

在 C#/.NET 中合并两个图像