Я отвечаю за поддержку устаревшего кода VB6 и столкнулся с досадной проблемой, связанной с блокировкой COM DLL проекта. (Мы назовем это MyProject и MyProject.dll )
Когда я загружаю MyProject в IDE VB6, я могу скомпилировать полученную двоично-совместимую DLL MyProject.dll . Затем я могу запустить свое (классическое ASP) веб-приложение, которое подключается к DLL (или что-нибудь еще в этом отношении).
Итак, когда я пытаюсь перекомпилировать COM DLL, я получаю сообщение об ошибке «Отказано в доступе». Затем я обнаружил, что должен выполнить следующие шаги для разблокировки DLL:
- Проверьте, у меня нет зависимых проектов, открытых в других IDE VB6
- Recycle IIS
- Проверьте, что файл не только для чтения (иногда это будет, если я проверил его в системе контроля версий)
- Закройте проект и снова откройте его.
Часто это последний шаг, который решает проблему и позволяет мне перекомпилировать, что означает, что VB6 IDE фактически блокирует DLL загруженного проекта!
Мой коллега объяснил мне, что это было связано с тем, как проект VB6 работает с двоичной совместимостью с DLL, но не смог предложить решение.
Мои поиски в других местах очень мало дали ответов. Поисковые запросы, связанные с этим, имеют тенденцию возвращать множество несвязанных ответов (возможно, я задаю неправильную вещь поисковым системам).
Самым близким, что я смог найти в Stackoverflow, был этот вопрос , полученный пару лет назад, но он не совсем соответствует требованиям.
У кого-нибудь есть другие предложения, которые могут улучшить это?