Проблемы со ссылками на пакеты в версии 2010 - PullRequest
0 голосов
/ 26 марта 2012

Я использую 32-битную версию win7 в виртуальной машине.Я пытаюсь сослаться на 5 ячеек (VB6) в моем проекте .net.Эти библиотеки (и их зависимости) зарегистрированы нормально, так как я могу использовать их изначально, поскольку они являются частью другого приложения, и это приложение работает нормально.

Я пытаюсь установить ссылку на любой из них непосредственно в vs, и я получаю сообщение об ошибке - Библиотека не зарегистрирована (исключение из HRESULT: 0x8002801D (TYPE_E_LIBNOTRurable)).

Однако, если яустановить ссылку на другой компонент com (на который я не хочу ссылаться, но который, в свою очередь, ссылается на эти библиотеки), я нахожу, что ссылки на эти команды (на которые я хочу ссылаться) правильно устанавливаются в сравнении с Iпросто нужно удалить ссылку на нежелательную DLL, и все, кажется, хорошо идти.

Если я смотрю на GUID и детали версии одного из успешно ссылающихся компонентов, они кажутся такими же, какGUID и версия, которая появляется в заголовке формы ошибки, когда я безуспешно пытаюсь установить ссылку на тот же компонент напрямую.

Кстати, я пытался восстановить установку VS безрезультатно

Мне было интересно, если кто-то может объяснить, что я делаю неправильно.

РЕДАКТИРОВАТЬ: продолжение после Ганса Suggestion

Итак, я запустил

tlbimp mylib.dll

, и он вернул ошибку TI1006 - Выходные данные перезаписывают входной файл.Поэтому, найдя следующие предложения, я затем выдал

tlbimp mylib.dll /OUT:interop.mylib.dll

, и это вернуло ошибку

TlbImp: warning TI3011: Импортер библиотеки типов обнаружил интерфейс, не производный от IUnknown: '_HiddenInterface'.Интерфейс пропущен.TlbImp: ошибка TI1033: не удается найти тип 'ADODB._Recordset_Deprecated' в 'ADODB, версия = 7.0.3300.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a'.Может быть несоответствие между ссылочной сборкой и библиотекой типов.

Но я не уверен, является ли это красной сельдью, поскольку на эту библиотеку можно ссылаться при успешной ссылке на другую библиотеку DLL более высокого уровня.Я пытался с DLL, которая не ссылается на ADODB и, кажется, работает с использованием tlbimp.Так, например,

tlbimp myNONADODBlib.dll /OUT:interop.myNONADODBlib.dll

работает из командной строки.Однако

tlbimp myNONADODBlib.dll

все еще генерирует ошибку TI1006 - выходной файл перезапишет входной файл, и я не могу сослаться на это в свой проект .net

РЕДАКТИРОВАТЬ:

Кажется, чтобыть проблема с ADO и Win7 SP1.http://support.microsoft.com/kb/2517589, который будет учитывать устаревшее сообщение об ошибке (TI1033), которое я получаю, но не потому, что VS не удалось создать CCW для DLL, я могу вручную создать CCW через tlbimp.(12/03/28 10:40):

Таким образом, я восстановил пакет с предложенным tlb.Теперь я могу успешно запустить

tlbimp mylib.dll

, не получая никаких сообщений об ошибках, и кажется, что оно успешно завершено.Однако, когда я пытаюсь добавить ссылку на эту DLL в VS, я все равно получаю то же самое оригинальное сообщение об ошибке (Библиотека не зарегистрирована (исключение из HRESULT: 0x8002801D (TYPE_E_LIBNOTRurable))).Я проверил реестр и регистрация выглядит нормально, то есть он указывает на правильный путь - мне интересно, если это проблема типа разрешений - но я работаю против администратора.

РЕДАКТИРОВАТЬ (12 /28.03. 10:15):

Так что я закончил тем, что создал новый абсолютно новый виртуальный компьютер с той же средой - и он работал нормально.Так что я понятия не имею, что происходит, кроме некоторого повреждения реестра, возможно!

Многие, спасибо

Саймон.

1 Ответ

0 голосов
/ 26 марта 2012

Вам нужно использовать REGTLIB.exe для регистрации библиотеки типов DLL.

Регистрация библиотеки типов отделена от регистрации компонента - библиотека типов поддерживает функциональность самоанализа / проводника типов и обычно не требуется для запуска предварительно скомпилированного приложения, хотя это может потребоваться для компиляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...