Ошибка TlbExp.exe: эта сборка построена более поздней версией
Мы переносим часть нашего сервера на.net 4.0. Мы уже сделали переход на Vs2010 в качестве первого шага, но не изменили целевой структуры любого проекта.
В качестве второго шага я перемещаю определенную часть нашего сервера на целевой сервер 4.0, чтобы мы могли использовать некоторые новые функции.
Я столкнулся с проблемой при вызове TLBexp.exe в DLL библиотеки классов, которая предназначена для 4.0. Эта DLL также ссылается на множество DLL, предназначенных для 2.0.
Я получаю сообщение об ошибке: TlbExp: ошибка TX0000: Не удалось загрузить файл или сборку 'file:Library.dll' или одну из ее зависимостей. Эта сборка создается средой выполнения, более новой, чем текущая загруженная среда, и не может быть загружена.
Я вызываю TLBExp, который поставляется с: Microsoft SDKs\Windows\v7.0A\bin\ В команде, которую я вызываю в командной строке VS2010, я ссылаюсь на двоичные файлы v4.0.30319 (такие как mscorlib.tlb)
Разрешено ли запускать TLB в библиотеке DLL 4.0, которая ссылается на библиотеки 2.0? Если да, то есть причина, по которой я получаю эту ошибку.
Вот точный вызов команды, который я использую: "C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\tlbexp.exe" /silent /win32 /tlbreference:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.tlb" /tlbreference:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.tlb" /tlbreference:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Windows.Forms.tlb" /tlbreference:"C:\Windows\system32\stdole2.tlb" C:\Dev\Library.dll
Спасибо
2 ответа
У меня была сборка с таргетингом 4.0, которая ссылалась на другую сборку с целевой структурой 3.5.
В результате я получал ту же ошибку на этапе "посткомпиляции". Методом проб и ошибок я обнаружил, что версия TLBExp находится в этой папке: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\
может сгенерировать файл TLB успешно.
НТН!
Вы можете использовать следующий путь к TlbExp, который будет выбран автоматически в зависимости от версии фреймворка проекта:
$(TargetFrameworkSDKToolsDirectory)\tlbexp.exe