Как я могу получить распакованный вывод задачи NANT на XP? - PullRequest
1 голос
/ 07 февраля 2009

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

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

1 Ответ

0 голосов
/ 07 февраля 2009

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

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

...