Microsoft OpenXML SDKバージョン2.0には、最大5111 KiB .NETアセンブリ(DLL)と最大14436KiBの非圧縮XMLファイルが付属しています。SDKを正常に使用するには、これらの両方が必要です。(重要な更新: DLLファイルのみが必要です。XMLはプログラマー向けの単なるAPIドキュメントです!!)
動作するSDKを使用してプログラムを作成しましたが、満足しています。ただし、LZMA2を使用してOpenXML SDKデータ(DLLおよびXML)を圧縮したところ、結果は1287KiBにすぎません。節約額は18260KiBで、平均的なWANリンクを介して転送するには、少なくとも数秒、最大で数分かかる場合があります。
LZMA SDKを7-zip.orgからダウンロードしました。これは、コンパイルされたMSIL(.NET Framework 4.0でコンパイルされたもの)の約45KiBでLZMAの圧縮と解凍を実装します。
私の目標は、リソースを圧縮し(7-Zipなどを使用)、ビルドされたアセンブリ(.exe)に保存してから、解凍してロードすることです。7-ZipSDKを使用して解凍を行う方法を知っています。したがって、私には2つの問題があります。
OpenXML SDKアセンブリ(.dll)をディスクに書き込まずに実行中の.NETプロセスにロードするにはどうすればよいですか?DLLの非圧縮バイトのbyte[]があると仮定します。実行可能ファイルへのリソースのパッキングは自分で行います。
OpenXMLスキーマ(DocumentFormat.OpenXml.xml)をディスクに書き込まずにメモリからロードするようにアセンブリに指示するにはどうすればよいですか?非圧縮XMLを含むbyte[]または文字列があると仮定します。繰り返しになりますが、解凍とリソースのパッキングは自分で行います。