2

我们有一个托管在 Azure Service Fabric 中的 .NET Core 应用程序。现在我们将其移至基于 Linux 的 Docker 容器。

我们需要能够为外部服务创建 7zip 存档(其中一个需要 7zip 存档的“通过 ftp 将文件拖放到此处”接口)。

到目前为止,我们可以使用从 .NET Framework 移植到 .NET Core 的 CLI 包装器。但是一旦我们切换到 Linux 环境,这将不再有效。

我们无法更改外部服务(因为它不是我们的)并且我们不想使用基于 Windows 的 Docker 容器。

.NET Framework 有大量 7zip NuGet 包。.NET Core 很少(大部分已过时且不再维护)。我找不到适用于 Linux 上的 .NET Core 的内容。

您对我们如何解决该问题有任何建议吗?


更新:我在SevenZipSharp项目的未解决问题中发现了一个类似的问题。遗憾的是没有包含解决方案。


更新 2:不幸的是,我们不能使用 LZMA 算法的替代实现。我们的第 3 方需要 .7z 格式的档案 :-(

4

1 回答 1

1

这不是一个答案,因为它并没有真正提供问题的解决方案,但它确实解决了为什么不太可能出现适用于 Linux 的更新的 7Zip 库并使用良好的 LZMA OS 跨平台压缩引擎解决问题。所以应该看成是长评论,希望没问题。

似乎 7Zip 在 Linux 上根本没有维护,当前的库相当旧,而且我不相信它与当前和更新的 Windows 7Zip 版本兼容,所以在我看来,Linux 上的 7Zip 是不行的。据我了解,Igor Pavlov(Zip 的创建者和维护者)仅针对 Windows。而且他不是当前和旧的 Linux 7Zip 库的创建者。

支持 Linux 和 Windows 的 LZMA 压缩引擎是LZip (.lz)。

最新的库 ( zlib ) 是 1.11,在 2019 年 7 月,我向 Domani Hannes 发送了一个请求以编译一个新的 Windows 版本,他很乐意回复一个下载链接和以下消息:

我刚刚用 lzlib-1.11 和 mingw-w64-winpthreads-v6.0.0 构建了 plzip-1.8。
不再需要为 Windows 编译所需的修改,所以它非常简单。

我想这意味着将来编译更新的 Windows 版本也很容易。

下载此二进制文件的链接:plzip_zlib_1.11.exe

我还没有时间为我自己的项目彻底测试它,所以如果有人走这条路,请分享你的经验(有劫持这个线程的风险,所以也许不是:-P)。

于 2020-02-10T15:07:04.167 回答