Вы правы. COM использует ProgId, чтобы добраться до ClassId, чтобы добраться до COM-сервера для загрузки. В случае DLL-библиотек .NET COM-сервер фактически является MSCOREE, а не .NET-библиотекой (значение ключа по умолчанию в {CLSID} / localserver32). MSCOREE, а не COM, затем может использовать любые правила, которые он хочет найти для сборки .NET.
На данный момент я не знаю, что на самом деле делает .NET - это потребует тестирования. Вы можете наблюдать за собой, используя FUSLOGVW . Однако я могу догадаться, что он загружает сборку так же, как и любую другую сборку .NET.
Предполагая, что он просто вызывает Assembly.Load () со значением ClassName, он будет следовать правилам .NET . Сначала посмотрите в GAC, если не найден, будет проверять - поэтому, если определена кодовая база, он будет только там смотреть, иначе он будет проверять на основе базы приложения (по умолчанию каталог приложения [, но не для ASP.NET). ]).
Я думаю, что это соответствует тому, что вы читаете в регазме.
Ваш вопрос настолько старый, что, я полагаю, это был OBE , но правила, которые вы использовали бы для размещения сборок в каталоге приложения , , используют кодовую базу или в GAC совпадают с и без взаимодействия. Каждая ситуация отличается, и я не сделал достаточно .NET, чтобы отказаться от каких-либо глубоких идей. Я предпочитаю установки xcopy, так что я бы пошел в каталог приложения (и использовал без регистрации COM ), но есть и другие соображения, например, если два приложения vb должны использовать одну и ту же версию объекта COM.