VB6 IDE блокирует DLL загруженного проекта - PullRequest
4 голосов
/ 06 октября 2010

Я отвечаю за поддержку устаревшего кода VB6 и столкнулся с досадной проблемой, связанной с блокировкой COM DLL проекта. (Мы назовем это MyProject и MyProject.dll )

Когда я загружаю MyProject в IDE VB6, я могу скомпилировать полученную двоично-совместимую DLL MyProject.dll . Затем я могу запустить свое (классическое ASP) веб-приложение, которое подключается к DLL (или что-нибудь еще в этом отношении).

Итак, когда я пытаюсь перекомпилировать COM DLL, я получаю сообщение об ошибке «Отказано в доступе». Затем я обнаружил, что должен выполнить следующие шаги для разблокировки DLL:

  1. Проверьте, у меня нет зависимых проектов, открытых в других IDE VB6
  2. Recycle IIS
  3. Проверьте, что файл не только для чтения (иногда это будет, если я проверил его в системе контроля версий)
  4. Закройте проект и снова откройте его.

Часто это последний шаг, который решает проблему и позволяет мне перекомпилировать, что означает, что VB6 IDE фактически блокирует DLL загруженного проекта!

Мой коллега объяснил мне, что это было связано с тем, как проект VB6 работает с двоичной совместимостью с DLL, но не смог предложить решение.

Мои поиски в других местах очень мало дали ответов. Поисковые запросы, связанные с этим, имеют тенденцию возвращать множество несвязанных ответов (возможно, я задаю неправильную вещь поисковым системам).

Самым близким, что я смог найти в Stackoverflow, был этот вопрос , полученный пару лет назад, но он не совсем соответствует требованиям.

У кого-нибудь есть другие предложения, которые могут улучшить это?

1 Ответ

3 голосов
/ 06 октября 2010

Сохраните копию MyProject.dll с именем MyProject.cmp и укажите двоичную совместимую настройку в свой файл .cmp. Таким образом, вам не нужно повторно открывать файл проекта (шаг 4).

Во время регистрации вы можете пометить оставить флажок , чтобы пропустить также шаг 3.

...