我正在为基于.NET的CMS编写一个插件,我想在第一次运行时解压缩一个javascript,CSS和图像文件树。因为我想只发送一个dll,所以我要压缩这些目录并将它们存储为资源。然后当插件运行时,它会检查是否存在必需的文件,如果不存在,它将解压缩它们。
我知道资源是“平的”,因为你无法设置目录结构,所以我可以看到某种形式的包装。
问题是,首先,这是可接受的事情,其次,.NET中是否有任何库可以让我这样做?我想如果我想使用内置函数,我可能不得不使用GZip而不是Zip,但有没有一种首选的方法来实现我想要实现的目标?
只是为问题添加一些东西 - 我知道一个常见的方案是使用.tar.gz,我目前正在做的。但由于某种原因,这让我觉得不是最优的,因为我必须导入外部库才能像这样工作。我认为这可能是一个普遍的事情,有一种或两种方式来本地做它。
答案 0 :(得分:2)
有几种方法可以打包和压缩.net http://msdn.microsoft.com/en-us/library/system.io.packaging.aspx附带的文件组(我认为在.net 3.0中发布)和http://msdn.microsoft.com/en-us/library/system.io.compression.aspx(.Net 4.5中的新版本)
您还可以使用几个免费的开源库(Sharp Zip Lib:http://www.icsharpcode.net/opensource/sharpziplib/和DotNetZip lib http://dotnetzip.codeplex.com/)。可能还有其他人。我既使用它们也使用Packaging apis。我赞成DotNetZip的易用性,但你可以非常快速地使用它们。
压缩资源是有意义的 - 这是对空间的智能使用 - 但是你的资源不必直接映射到你将如何/在哪里提取它们(因为你编写代码来提取和编写资源你如果它更有意义,可以将它们保持平坦。)