我在我的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机器上解压缩。生活和南特都很好,对吗?好吧,其他人在Windows XP Pro上解压缩这些文件时会收到以下消息:
压缩(压缩)文件夹无效或已损坏。
我把我机器上生成的文件带到了XP机器上并得到了相同的信息。我注意到的一个区别是,当我使用XP的内置工具打开zip时,它说每个文件的压缩率是100%。在Vista上使用jZip,每个文件都有不同的非100%比率。
有没有人经历过这样的事情?是否有一些我不知道的设置要使Nant zip任务的输出在XP上无法解压缩? Nant对我来说工作得很好,如果这个愚蠢的解压缩问题会给XP用户带来麻烦,我会很失望。
答案 0 :(得分:0)
我发现我的问题的答案不在于Nant脚本,而在于版本不兼容,我认为通过程序集版本重定向来解决这个问题我很聪明。这教我认为我很聪明!
事实证明,Nant I的发行版(检查到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地狱已经死了,我还以为我已经超越了我们现在所处的新地狱。事实证明,我应该简单地将lib \ commmon \ neutral中的旧版本复制到lib中的新版本。
现在我的构建服务器生成可以在XP上解压缩的文件。