В проекте C# мы добавляем ссылку на COM-объект через Добавить Ссылочную установку, указывающую на COM-объект, который приводит к IDE, автоматически генерирующему interop блок. Таким образом, это прекрасно и хорошо, но мы создаем на основе .net 3.5 SP1 иначе CLR 2.0, и сгенерированные interops используют 4,0 CLR, делающие их несовместимый. Существует ли способ предотвратить это?
Я предполагаю, что другая опция, настраивают наш сценарий сборки, чтобы попытаться использовать tlbimp.exe с / ссылочным параметром? указать на mscorlib v2.0?
Во всяком случае я надеюсь, что существует флаг где-нибудь для разрешения этого.
Я столкнулся именно с этой проблемой. Решение я нашел, используя версию 3.5 tlbimp из .Net Framework SDK (или Windows Platform SDK?), расположенную в %ProgramFiles%\Microsoft SDKs\Windows\v6.0A\bin, которая использовала CLR 2.
Я также обнаружил, что мне нужна эта информация, чтобы получить правильную библиотеку типов из exe файла, который я импортировал, так как VS будет использовать только первую библиотеку типов:
"Идентификатор ресурса может быть опционально добавлен к файлу библиотеки типов при импорте библиотеки типов из модуля, содержащего несколько библиотек типов."
tlbimp MyModule.dll\1
from http://msdn.microsoft.com/en-us/library/tt0cf3sx%28VS.80 %29.aspx