Метод, который я использую для определения проблем такого типа, - это открыть диалоговое окно добавления ссылки в Visual Basic 6. Я прокручиваю список доступных библиотек COM и проверяю, есть ли в списке проблемная DLL. Если это так, то CreateObject должен работать, вы должны иметь возможность назначить ему вариантный вариант и использовать позднюю привязку для доступа к его членам.
Кроме того, попробуйте временно установить ссылку на переменную и вместо использования CreateObject используйте = New и посмотрите, какие сообщения об ошибках, если они есть, выдают. В общем, я нашел их более информативными, чем те, которые были созданы CreateObject.
Наконец, было бы полезно, если бы вы опубликовали причину, по которой вы решили использовать CreateObject вместо установки ссылки. Если DLL является известным объектом, который будет постоянно использоваться программой, тогда должна быть установлена ссылка и обычно используется раннее связывание.
Наконец, возможно, ошибка вызвана зависимостью C # COM DLL, а не самой DLL. Если, например, я должен был взять библиотеку Com и правильно зарегистрировать ее, но она полагается на библиотеку COM Widget2000, и она НЕ зарегистрирована, то это вызовет ошибку автоматизации. Особенно, если вы тестируете EXE в установленной среде, а не в той среде, в которой вы его соблюдаете.
Например, предположим, что у меня есть программа CAD, написанная на VB6, и у меня есть дерево исходных текстов, которое начинается с MyCAD. Exe находится в MyCAD / MainEXE, а библиотека форм находится в MyCAD / ShapeLibrary. Я запускаю IDE все в порядке. Затем я настраиваюсь и захожу на свой тестовый компьютер и устанавливаю его, и возникает ошибка при создании shape-библиотеки.
Первым делом я проверю, будет ли MainEXE работать из директории MainEXE моего дерева исходных текстов. Этот тест устранит, является ли это проблемой при установке или причудой версии IDE против совместимой. Тогда я бы посмотрел на настройку и увидел, что не регистрируется. Также посмотрите на источник для библиотеки C # или настройку для библиотеки и посмотрите, какие зависимости ей нужны. Поскольку это COM-библиотека, соответствующая требованиям, вы должны иметь возможность использовать средство обхода зависимостей, чтобы увидеть, какие COM-ссылки ссылаются на нее. Наконец, убедитесь, что установлена правильная версия .NET Framework.