Как отменить регистрацию моей сборки .net, когда она больше не находится в том же месте?

StackOverflow https://stackoverflow.com/questions/455073

Вопрос

У меня есть dll, которая зарегистрирована для com-взаимодействия, поэтому в HKLM \ Software \ Classes \ CLSID [my guid] \ InprocServer32 [my version no] \ Codebase есть путь к зарегистрированной dll. Тем не менее, я изменил структуру папок, чтобы путь больше не был правильным. Есть ли способ отменить регистрацию этой dll, не возвращая ее, затем отменить регистрацию, а затем снова удалить файл?

А что, если у меня больше нет этой dll или есть только одна с другим номером версии?

Это было полезно?

Решение

Различные номера версий (как правило) не имеют значения. До тех пор, пока более новая DLL содержит все идентификаторы GUID, которые появляются в более старой версии, она не будет должным образом зарегистрирована (используя новую с regasm, exe). И, конечно же, перерегистрация сборки для взаимодействия COM будет правильно перемещать необходимые ключи реестра.

Другие советы

Насколько я знаю, все, что вам нужно, это зарегистрировать DLL в новом месте.
Вы можете использовать инструмент MS oleview.exe , чтобы убедиться, что регистрация COM указывает на правильное местоположение.

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

HKCR\MyLib.MyClass\CLSID:(Default)=<my guid>

and 

HKCR\CLSID\<my guid>:Assembly=<string containing version number> 

and 

HKCR\CLSID\<my guid>\InprocServer32\<version number>\ ... more details

Я думаю, что среда выполнения попытается загрузить сборку, указанную в HKCR\CLSID\<my guid>:Assembly, поэтому вы можете отменить ее, если это возможно.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top