Можно ли зарегистрировать сборку .net как COM без строгого именования?

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

Сильно назвав его, он может быть помещен в GAC и, таким образом, легко доступен со страницы ASP.

Можно ли как-то зарегистрировать сборку, не подписывая ее строгим именем, и при этом иметь возможность каким-то образом получить к ней доступ со страницы ASP? Я хочу сделать это, потому что мы хотим, чтобы эта .NET-сборка могла ссылаться на независящие сборки и не была зависимой при обновлении ссылочных сборок.


person Per Hornshøj-Schierbeck    schedule 11.06.2009    source источник


Ответы (2)


Вы вызываете regasm с параметром / codebase:

> regasm.exe /codebase path_to_dll\yourdll.dll

Изменить: извините, это неправильно ...
Только что видел в документация, что ваша dll также должна иметь строгое имя: s
Но вам не нужно помещать ее в GAC!
Я не думаю, вы можете экспортировать .Net-библиотеку как COM-объекты без строгого именования.

НО (см. комментарии): очевидно, что документация неверна, поскольку люди делали это без строгого именования (лично я этого не делал, поскольку все наши com-открытые сборки имеют строгие имена).

person fretje    schedule 11.06.2009
comment
В версиях 1.0 и 1.1 не было абсолютно никакого требования строгого имени, поскольку я делал это довольно часто. Инструмент регазмирования выдавал только предупреждение, но работал правильно. Документы, на которые вы отправили ссылку, относятся к версии 1.1, поэтому я думаю, что документы неправильные. - person Adam Sills; 11.06.2009
comment
(... хотя я всегда использовал / codebase указывал на DLL в каталоге / bin моего веб-приложения) - person Adam Sills; 11.06.2009
comment
Документация неверна. / codebase достаточно, чтобы приступить к работе. Мы используем эту технику для написания надстроек к различным продуктам, которые не предоставляют сборки со строгими именами для нашего потребления, тем самым не позволяя нам использовать строгие имена для нашей собственной сборки. - person Joel Lucsy; 11.06.2009
comment
Это сработало - я создал / codebase / regfile и вручную запустил файл .reg, чтобы он заработал. Я пробовал разные подходы (я действительно не понимаю, почему мне нужно было создавать / запускать файл .reg, поскольку / codebase должен был позаботиться об этом) - person Per Hornshøj-Schierbeck; 16.06.2009
comment
@ PerHornshøj-Schierbeck: причина в том, что параметр /regfile говорит, что не изменяйте реестр, а просто перечислите изменения реестра в файле. - person Stobor; 03.07.2012

Используется System.Runtime.InteropServices.RegistrationServices (). RegisterAssembly ()

person Milk Soft    schedule 07.08.2020