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

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

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

Ответы [ 3 ]

2 голосов
/ 19 января 2009

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

1 голос
/ 18 января 2009

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

0 голосов
/ 20 мая 2011

Проблема, с которой мы столкнулись при регистрации нового 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 значение вручную, если вы решитесь.

...