Microsoft OpenXML SDK 版本 2.0 附带一个 ~5111 KiB .NET 程序集 (DLL) 和一个 ~14436 KiB 未压缩的 XML 文件。这两者都是成功使用 SDK 所必需的。(重要更新:只需要 DLL 文件;XML 只是程序员的 API 文档!!)
我已经使用有效的 SDK 编写了一个程序,我对此感到满意。但是,我使用 LZMA2 压缩了 OpenXML SDK 数据(DLL 和 XML),结果只有 1287 KiB。节省了 18260 KiB,通过普通 WAN 链接传输可能需要至少几秒钟,最多几分钟。
我从7-zip.org下载了 LZMA SDK,它在大约 45 KiB 的已编译 MSIL(由 .NET Framework 4.0 编译)中实现了 LZMA 压缩和解压缩。
我的目标是压缩资源(使用 7-Zip 之类的东西),将它们存储在构建的程序集 (.exe) 中,然后解压缩并加载它们。我知道如何使用 7-Zip SDK 进行解压缩。因此,我有两个问题:
如何将 OpenXML SDK 程序集 (.dll) 加载到正在运行的 .NET 进程中而不将其写入磁盘?假设我有一个 byte[] 的 DLL 未压缩字节;我将自己负责将资源打包到可执行文件中。
如何告诉程序集从内存中加载 OpenXML 架构 (DocumentFormat.OpenXml.xml) 而不将其写入磁盘?假设我有一个包含未压缩 XML 的 byte[] 或字符串。同样,我将自己负责解压缩和资源打包。