Отмена регистрации dll без файла

В рамках процесса сборки несколько dll и tlb регистрируются на COM через regsvr32. В конце сборки есть шаг, который отменяет регистрацию того же списка DLL и TLB. Однако этот шаг не выполняется, если сборка завершается неудачно на ранней стадии.

Проблема состоит в том, что последующие сборки не всегда используют один и тот же путь сборки, и сборки проекта терпят неудачу из-за того, что они ищут зарегистрированные DLL в неправильном месте (так как они все еще зарегистрированы в COM из предыдущей неудачной сборки).

Простое решение состоит в том, чтобы сценарий отмены регистрации выполнялся в конце каждой сборки, независимо от того, произошел ли сбой или неудача, однако это не так просто с нашим инструментом сборки. Есть ли другой способ отменить регистрацию DLL / TLB без их исходного исходного файла, присутствующего в его зарегистрированном пути?

1 ответ

Решение

Вам не нужно вызывать unregister с той же самой dll, с которой вы зарегистрировались, вам просто нужно знать, что dllUnregisterServer удаляет те же классы в своем методе DllUnregisterServer, что и потерянный dll-файл в своем методе DllRegisterServer.

Имея это в виду, вы должны быть в состоянии использовать DLL на новом пути, чтобы отменить регистрацию на старом пути.

Возможно, попробуйте изменить процесс сборки, чтобы отменить регистрацию dll перед их регистрацией, это очистит висячие ссылки на потерянные dll перед регистрацией правильных, и вы должны быть готовы.

Другие вопросы по тегам