Ошибка TlbExp.exe: эта сборка построена более поздней версией - PullRequest
9 голосов
/ 15 апреля 2011

Мы переносим часть нашего сервера на .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 ]

20 голосов
/ 19 апреля 2011

У меня была сборка, нацеленная на 4.0, которая ссылалась на другую сборку с целевой структурой 3.5.

В результате я получил ту же ошибку на этапе "посткомпиляции".Методом проб и ошибок я обнаружил, что версия TLBExp, найденная в этой папке: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\ может успешно сгенерировать файл TLB.

HTH!

7 голосов
/ 19 сентября 2012

Вы можете использовать следующий путь к TlbExp, который будет выбран автоматически в зависимости от версии фреймворка проекта:

$(TargetFrameworkSDKToolsDirectory)\tlbexp.exe
...