зарегистрировать dll - GUID не найдены в реестре - PullRequest
3 голосов
/ 03 августа 2010

У меня есть ac # -dll, и регистрация через regasm говорит мне об успехе, но GUID не были добавлены в реестр, и поэтому компонент нигде не может быть использован.и я просто не знаю, почему: (

атрибуты класса:

[ProgId( "blup" )]
[ClassInterface( ClassInterfaceType.None ), ComSourceInterfaces( typeof( blap ))]
[Guid( "0CFEF92B-A155-4353-B7A3-58A717193E0C" )]
[ComVisible( true )]
public class blup
...

атрибуты интерфейса:

[Guid( "9FD1B3E5-4873-403a-91AA-2EEC7296B38D" )]
[InterfaceType( ComInterfaceType.InterfaceIsIDispatch )]
[ComVisible ( true )]
public interface blap
...

assemblyInfo.cs:

...
[assembly: ComVisible( true )]
[assembly: Guid("37639A04-9DAC-40ee-ADBB-2F07F78FD265")]
...

опция, чтобы сделать сборку видимой, установлена ​​в true. Регистрация для com-interop ist установлена ​​в false, поскольку я не хочу, чтобы она регистрировалась в каждой сборке.

регистрация через regasm / codebase -> успех. регистрация через regasm / codebase / tlb -> success.

, но в обоих случаях я не могу найти ни один из моих GUID в реестре.

добавив параметр / regfile вregasm, файл генерируется, но состоит только из следующих строк:

[HKEY_CLASSES_ROOT\Record\{D4DAB0A5-AC0A-3498-BD1E-6665735B5649}\1.3.3.7]
"Class"="<classname>+eventType"
"Assembly"="<name>, Version=1.3.3.7, Culture=neutral, PublicKeyToken=bba2258cd5ab986c"
"RuntimeVersion"="v2.0.50727"
"CodeBase"="file:///<filename>"

GUID из regfile нигде не используется в vs-проекте. Все это работает - точнее, нет работает - с Visual Studio 2008 на Windows 7 64.

спасибо за любые советы заранее. Если я пропустил, чтобы дать некоторую информацию, пожалуйста, дайте мне знать!

Ответы [ 2 ]

0 голосов
/ 19 декабря 2012

Я попал в ту же проблему и обнаружил проблему. Кажется, что интерфейс не зарегистрирован, потому что библиотека типов не зарегистрирована.

Итак, вы должны использовать:

regasm /codebase /tlb Mylib.dll

Примечание: извините, я думал, что вы не смогли увидеть записи интерфейса в реестре, поэтому я предложил параметр / tlb.

0 голосов
/ 03 августа 2010

Возможно, проблема в различном представлении реестра для 32-разрядных и 64-разрядных программ . Примерно так: вы регистрируете .dll как 64-битный сервер, а затем смотрите с помощью 32-битного regedit или наоборот.

...