Это почти наверняка проблема управления версиями, иногда известная как "ад DLL".
Предпосылкой является то, что мир .NET явно разработан, чтобы позволить интерфейсам развиваться, сохраняя то же имя. Но в мире COM интерфейсы считаются неизменными.
Когда вы работаете в среде IDE, Visual Studio создает новую оболочку COM Interop для COM dll каждый раз, когда вы запускаете свое решение. Но если вы не будете выпускать и заменять все свое решение каждый раз, включая совершенно новую оболочку COM Interop, вы столкнетесь с проблемой управления версиями, когда код .NET ожидает один интерфейс COM, но видит другой.
РЕДАКТИРОВАТЬ : По некоторым причинам я предположил, что вы пытаетесь использовать компонент COM из компонента .NET. Если все решение на самом деле VB6, то решение г-на Конли - рекомендуемый подход. Вот хорошая ссылка , в которой обсуждается проблема.