1

我在我的 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 上解压缩这些文件时会收到以下消息:

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

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

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

4

1 回答 1

0

我发现我的问题的答案不在于 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 中的旧版本复制到 lib 中的新版本上。

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

于 2009-02-07T19:07:59.323 回答