我们有一个托管在Azure Service Fabric中的.NET Core应用。现在我们把它移到基于 Linux 的 Docker 容器上。
我们需要能够为外部服务创建 7zip 存档(其中一个花哨的"通过 ftp 将您的文件拖放到此处"接口,需要 7zip 存档(。
到目前为止,我们可以使用从.NET Framework移植到.NET Core的CLI包装器。但是一旦我们切换到 Linux 环境,这就不再有效了。
我们不能更改外部服务(因为它不是我们的(,也不想使用基于 Windows 的 Docker 容器。
有大量用于.NET Framework的7zip NuGet包。很少有.NET Core(大部分已过时且不再维护(。我在Linux上找不到.NET Core。
您对我们如何解决这个问题有什么建议吗?
更新:我在SevenZipSharp项目的未解决问题中发现了一个类似的问题。可悲的是,没有包括解决方案。
更新2:不幸的是,我们不能使用LZMA算法的替代实现。我们的第三方需要.7z格式的档案:-(
这不是一个答案,因为它并没有真正为这个问题提供解决方案,但它确实解决了为什么不太可能为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(。