【问题标题】:How can I get output of NANT zip task to be unzipped on XP?如何获得 NANT zip 任务的输出以在 XP 上解压缩?
【发布时间】:2009-02-08 03:07:59
【问题描述】:

我在我的 Vista 开发机器上编写了以下 Nant 脚本,并且对 Nant zip 任务的输出感到很满意,因为我可以在遇到任何问题时解压缩它:

<zip zipfile="${dir.build}CeoConfigUtilities.${build-version}.zip">
   <fileset basedir="${dir.configutilities}" prefix="CeoConfigUtilities">
      <include name="**" />
   </fileset>
</zip>

我将 Nant 脚本检查到 SVN 中,构建服务器将我的文件压缩起来没有问题。我测试并发现我也可以在我的 Vista 机器上解压缩这些文件。 Life和Nant很好,对吧?好吧,其他人在 Windows XP Pro 上解压缩这些文件时会收到以下消息:

压缩(压缩)文件夹无效或损坏。

我将在我的机器上生成的文件带到 XP 机器上并得到了相同的消息。我注意到的一个区别是,当我使用 XP 的内置工具打开 zip 文件时,它显示每个文件的压缩率为 100%。在 Vista 上使用 jZip,每个文件都有不同的、非 100% 的比率。

有没有人经历过这样的事情?是否有一些我不知道的设置可以使 Nant zip 任务的输出在 XP 上解压缩? Nant 对我来说工作得很好,如果这个愚蠢的解压缩问题让 XP 用户搞砸了,我会很失望。

【问题讨论】:

    标签: windows-vista windows-xp zip nant


    【解决方案1】:

    我发现我的问题的答案不在于 Nant 脚本,而在于版本不兼容,我认为我通过程序集版本重定向来解决这个问题很聪明。这教会了我认为自己很聪明!

    事实证明,我使用的 Nant 发行版(已签入 StructureMap SVN 存储库的发行版)包含两个不同版本的 SharpZipLib。在 lib 中,SharpZipLib.dll 的版本为 0.85.5.452。在 lib\common\neutral 中,SharpZipLib.dll 的版本为 0.85.1.271。添加 zip 任务会产生程序集绑定错误,因此我在 Nant.exe.config 中添加了以下内容:

    <dependentAssembly> 
       <assemblyIdentity name="ICSharpCode.SharpZipLib" publicKeyToken="1b03e6acf1164f73" culture=""/>
       <bindingRedirect oldVersion="0.85.1.271" newVersion="0.85.5.452"/>
    </dependentAssembly>
    

    我认为 DLL Hell 已经死了,而且我还认为我已经超越了我们现在所处的任何新地狱。事实证明,我应该简单地将 lib\commmon\neutral 中的 old version 复制到 lib 中的 new version 上。

    现在我的构建服务器生成可以在 XP 上解压缩的文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-22
      • 1970-01-01
      • 1970-01-01
      • 2012-01-08
      • 1970-01-01
      相关资源
      最近更新 更多