Как я могу получить распаковку задачи NANT zip на XP?

Я написал следующий сценарий Nant на своей машине для разработки Vista и был очень доволен выводом задачи Zip Nant, так как я могу распаковать его с любыми проблемами:

<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 и получил то же сообщение. Одно отличие, которое я заметил, заключается в том, что когда я открываю zip-архив с помощью встроенных инструментов XP, он говорит, что степень сжатия для каждого файла составляет 100%. Используя jZip в Vista, каждый файл имеет разное соотношение, отличное от 100%.

Кто-нибудь испытывал что-нибудь подобное? Есть ли какой-то параметр, о котором я не знаю, чтобы выходные данные задачи Zip Nant не распаковывались в XP? Nant так хорошо работал для меня, что я буду разочарован, если эта глупая проблема с распаковкой запутает пользователей XP.


person flipdoubt    schedule 06.02.2009    source источник


Ответы (1)


Я обнаружил, что ответ на мой вопрос заключается не в сценарии Nant, а в несовместимости версий, которую, как мне казалось, я был умен, работая с перенаправлением версии сборки. Это учит меня думать, что я умный!

Оказалось, что дистрибутив Nant, который у меня был на руках (тот, который зарегистрирован в репозитории StructureMap SVN), содержит две разные версии SharpZipLib. В библиотеке SharpZipLib.dll стоит версия 0.85.5.452. SharpZipLib.dll находится в папке lib \ common \ нейтральная версия 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 \ нейтральную вместо новой версии в lib.

Теперь мой сервер сборки создает файлы, которые можно разархивировать на XP.

person flipdoubt    schedule 07.02.2009