Использование NAnt и Ivy для создания проекта VB6 - PullRequest
2 голосов
/ 04 августа 2009

Я работаю над системой непрерывной интеграции для приложений .Net и VB6 с использованием Subversion, CruiseControl, NAnt и Ivy.

.Нет сторона вещей. Не слишком большая проблема, но мне нужно небольшое руководство со стороны вещей VB6, больше со стороны "DLL-адской" вещи!

Моя текущая установка получает все зависимые файлы для моей системы VB6, как и ожидалось, и строит различные проекты в пределах ОК. НО ... он использует библиотеки DLL, которые уже зарегистрированы на моем ПК, а не те, которые находятся в моей папке Lib, где я решаю свои зависимости от Ivy.

Я могу обойти эту проблему, зарегистрировав загруженные библиотеки DLL после того, как Ivy разрешит их, что означает, что файл проекта может быть указан в локальной папке Lib; но я хочу, чтобы мой сценарий NAnt делал это автоматически, а затем автоматически отменял их регистрацию после завершения процесса сборки, чтобы следующий проект мог выполнить то же самое.

Мне кажется, что мне нужна помощь, это возможность заставить Айви дать мне список зависимостей проекта ...

Например, если я собираю проект X, который зависит от проектов A, B и C, то, если бы я мог выдать команду Ivy, которая выдаст список, такой как A, B, C, тогда я смогу передать эти в другой целевой процесс, чтобы зарегистрировать / отменить их регистрацию по очереди ...

Имеет ли это смысл? Возможно ли это, и я смотрю на это правильно? Или есть лучший способ?

Мои извинения за то, что я обошел дома, чтобы объяснить это ... !!

Ответы [ 3 ]

4 голосов
/ 04 августа 2009

Мы храним ссылки на проекты в отдельных файлах REF рядом с нашими файлами VBP, и мы используем специальный инструмент для «исправления» VBP во время компиляции. Наш процесс сборки в значительной степени вдохновлен этой страницей («Как мы работаем») , и наши REF-файлы являются прямым подрывом структуры, которую он описывает.

В разделе «Как мы работаем» вы можете перейти по ссылке на L.J. Johnson's берет под свой контроль цикл сборки для утилиты, которая делает то же самое "исправление" без внешних файлов.

В основном исправление должно использовать tlbinfo для извлечения LIBID из исполняемого файла (OCX / DLL) и полной замены guid ссылки в файле VBP. Как только эта не очень сложная процедура используется, не имеет значения, используете ли вы бинарную или проектную совместимость для своих проектов. Кроме того, при выполнении полных сборок ни одна из предыдущих OCX / DLL не должна быть зарегистрирована.

2 голосов
/ 06 августа 2009

Visual Build Pro рекомендуется в этом ответе . Другие ответы тоже заслуживают внимания.

1 голос
/ 18 августа 2009

Я нашел ответ на этот вопрос сам;

Вместо того чтобы использовать Ivy для создания списка зависимостей для меня по требованию, я решил использовать файловую систему, чтобы получить тот же список, поскольку Ivy выполнила свою работу по разрешению зависимостей для меня. в результате получается папка 'lib', полная DLL-файлов ...

Все, что я сделал, это получил список DLL-файлов в этой папке lib, сохранил их в свойстве (переменной) и затем перебрал все то же свойство, зарегистрировав / отменив регистрацию, если необходимо.

Просто правда ..!

...