Что на самом деле делает «Регистрация для COM Interop»? - PullRequest
56 голосов
/ 21 августа 2010

Что конкретно делает опция проекта VS "Зарегистрироваться для COM-взаимодействия"? Потому что, когда я собираю свою библиотеку с этой опцией, я могу вызвать CreateObject для своей библиотеки из VBScript. Но если я создаю без этого, а затем запустить regasm вручную, CreateObject не удается. Вот мне и интересно - что делает VS2010, чего я не делаю?

1 Ответ

56 голосов
/ 21 августа 2010

Это то же самое, что и запуск Regasm.exe с параметрами / tlb и / codebase.Возможно, вы забыли параметр / codebase.Regasm любит предполагать, что вы помещаете DLL в GAC, и выдает предупреждение, когда вы этого не делаете.GAC - действительно очень хороший способ избежать ада DLL, всегда проблемы с COM.Но не подходит для вашей машины разработки, вы не хотите загрязнять GAC при разработке и тестировании кода.Это имеет значение только на компьютере вашего пользователя, который может быть подвержен нескольким версиям.

Использование неправильной версии Regasm.exe на 64-битной машине - это еще один способ попасть в неприятности, обычно есть4 версии на твоей машине.Обязательно различайте 32-битные и 64-битные версии (c: \ windows \ microsoft \ framework против framework64), они пишут разные ключи реестра.Вы хотите выбрать тот, который совместим с клиентским приложением.Использование обоих тоже хорошо, код .NET может работать в любом режиме, но довольно необычно.Различают версии v2.0.50727 (.NET 2.0 - 3.5SP1) и версии v4.0.Выбор правильной командной строки Visual Studio - залог успеха.

...