2014-01-24 2 views
2

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

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

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

ответ

1

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

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

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

Смежные вопросы