Программа экспорта библиотек типов (Tlbexp.exe)
Обновлен: Ноябрь 2007
Программа экспорта библиотек типов создает библиотеку типов, описывающую типы, определенные в сборке общеязыковой среды выполнения.
tlbexp assemblyName [/out:file] [/nologo] [/silent] [/verbose]
Параметры
Аргумент |
Описание |
---|---|
имя_сборки |
Сборка, для которой экспортируется библиотека типов. |
Параметр |
Описание |
---|---|
/asmpath:каталог |
Указывает место поиска сборок. При использовании этого параметра необходимо непосредственно задать места поиска указанных сборок, включая текущий каталог. При использовании параметра asmpath программа экспорта библиотек типов не будет искать сборку в глобальном кэше сборок. |
/help |
Отображает синтаксис команд и параметров программы. |
/names:имя_файла |
Определяет регистр букв имен в библиотеке типов. Аргумент имя_файла задает текстовый файл. Каждая строка файла определяет регистр букв одного имени в библиотеке типов. |
/nologo |
Отключает отображение эмблемы Майкрософт при запуске. |
/oldnames |
Задает экспорт имен типов с оформлением в случае конфликта имен типов. Следует иметь в виду, что такой режим использовался по умолчанию в версиях .NET Framework, предшествующих версии 2.0. |
/out:файл |
Определяет имя создаваемого файла библиотеки типов. Если этот параметр не задан, Tlbexp.exe создает библиотеку типов с именем, совпадающим с именем сборки (фактическим именем сборки, которое необязательно должно совпадать с именем файла, содержащего сборку), и расширением .tlb. |
/silent |
Отключает отображение сообщений об успешно выполненных операциях. |
/tlbreference:имя_библиотеки_типов |
Задает явное разрешение ссылок на библиотеки типов без обращений к реестру. Например, если сборка B указывает на сборку A, с помощью данного параметра можно предоставить явную ссылку на библиотеку типов, а не использовать библиотеку типов, указанную в реестре. Tlbexp.exe выполняет проверку версий, чтобы убедиться, что версия библиотеки типов соответствует версии сборки; в противном случае выдается ошибка. Следует иметь в виду, что параметр tlbreference не отменяет обращения к реестру в случае применения атрибута ComImportAttribute к интерфейсу, впоследствии реализуемому другим типом. |
/tlbrefpath:путь |
Полный путь к указанной библиотеке типов. |
/win32 |
При компиляции на 64-разрядном компьютере данный параметр программы Tlbexp.exe задает генерацию 32-разрядной библиотеки типов. |
/win64 |
При компиляции на 32-разрядном компьютере данный параметр программы Tlbexp.exe задает генерацию 64-разрядной библиотеки типов. |
/verbose |
Задает режим подробного протоколирования; отображает список всех сборок, на которые есть ссылки и для которых необходимо создать библиотеку типов. |
/? |
Отображает синтаксис команд и параметров программы. |
Примечание. |
---|
Параметры командной строки для Tlbexp.exe вводятся без учета регистра и могут быть заданы в любом порядке. Можно вводить только часть имени параметра, достаточную для его однозначной идентификации. Например, /n эквивалентно /nologo, а /o:outfile.tlb эквивалентно /out:outfile.tlb. |
Заметки
Tlbexp.exe создает библиотеку типов, содержащую определения типов, заданных в сборке. Приложения, такие как Visual Basic 6.0, могут использовать созданную библиотеку типов для связывания с типами .NET, определенными в сборке.
Преобразование всей сборки выполняется целиком. Программу Tlbexp.exe нельзя использовать с целью генерации сведений о типах для подмножества типов, определенных в сборке.
Программа Tlbexp.exe не может использоваться для получения библиотеки типов из сборки, импортированной с помощью программы импорта библиотек типов (Tlbimp.exe). Вместо этого следует указать исходную библиотеку типов, импортированную с помощью Tlbimp.exe. Библиотеку типов можно экспортировать из сборки, содержащей ссылки на сборки, импортированные с помощью Tlbimp.exe. См. ниже раздел примеров.
Tlbexp.exe размещает созданные библиотеки типов в текущем рабочем каталоге или каталоге, заданном для выходного файла. Из одной сборки можно создать несколько библиотек типов.
Tlbexp.exe создает библиотеки типов, но не регистрирует их. В этом состоит отличие от программы регистрации сборок (Regasm.exe), которая и создает библиотеку типов, и регистрирует ее. Для создания и регистрации библиотеки типов в COM используйте Regasm.exe.
Если параметры /win32 и /win64 не заданы, Tlbexp.exe создает 32-разрядную или 64-разрядную библиотеку типов в соответствии с типом компьютера, на котором выполняется компиляция (32-разрядный или 64-разрядный компьютер). Для перекрестной компиляции можно задать параметр /win64 на 32-разрядном компьютере, чтобы создать 64-разрядную библиотеку типов, или параметр /win32 на 64-разрядном компьютере для создания 32-разрядной библиотеки типов. В 32-разрядных библиотеках типов значение SYSKIND устанавливается равным SYS_WIN32. В 64-разрядных библиотеках типов значение SYSKIND устанавливается равным SYS_WIN64. Все преобразования типов данных (например, типы данных с размером указателя, такие как IntPtr и UIntPtr) производятся соответствующим образом.
Если с помощью атрибута MarshalAsAttribute в качестве значения поля SafeArraySubType задается VT_UNKOWN или VT_DISPATCH, Tlbexp.exe игнорирует все последующие случаи использования поля SafeArrayUserDefinedSubType. Например, для следующих подписей:
[return:MarshalAs(UnmanagedType.SafeArray, SafeArraySubType=VarEnum.VT_UNKNOWN, SafeArrayUserDefinedSubType=typeof(ConsoleKeyInfo))] public Array StructUnkSafe(){return null;}
[return:MarshalAs(UnmanagedType.SafeArray, SafeArraySubType=VarEnum.VT_DISPATCH, SafeArrayUserDefinedSubType=typeof(ConsoleKeyInfo))] public Array StructDispSafe(){return null;}
создается следующая библиотека типов:
[id(0x60020004)]
HRESULT StructUnkSafe([out, retval] SAFEARRAY(IUnknown*)* pRetVal);
[id(0x60020005)]
HRESULT StructDispSafe([out, retval] SAFEARRAY(IDispatch*)* pRetVal);
Обратите внимание, что Tlbexp.exe игнорирует поле SafeArrayUserDefinedSubType.
Так как библиотеки типов не могут разместить все данные, найденные в сборке, Tlbexp.exe может пропустить некоторые данные в процессе экспорта. Описание процесса преобразования и источников каждого элемента данных, передаваемого в библиотеку типов, см. в разделе Сводка преобразования сборки в библиотеку типов.
Следует иметь в виду, что программа экспорта библиотек типов экспортирует методы, для которых в качестве параметра TypedReference задано VARIANT, несмотря на то, что объект TypedReference теряет смысл в неуправляемом коде. При экспорте методов с параметрами TypedReference программа экспорта библиотек типов не выдает предупреждение или сообщение об ошибке, и неуправляемый код, в котором используется полученная библиотека типов, будет выполняться неправильно.
Программа экспорта библиотек типов поддерживается в Microsoft Windows 2000 и последующих версиях.
Примеры
Следующая команда создает библиотеку типов с таким же именем, как у сборки, найденной в myTest.dll.
tlbexp myTest.dll
Следующая команда создает библиотеку типов с именем clipper.tlb.
tlbexp myTest.dll /out:clipper.tlb
Следующий пример иллюстрирует использование Tlbexp.exe для экспорта библиотеки типов из сборки, на которую ссылаются сборки, импортированные с помощью Tlbimp.exe.
Сначала с помощью Tlbimp.exe импортируйте библиотеку типов myLib.tlb и сохраните ее как myLib.dll.
tlbimp myLib.tlb /out:myLib.dll
Следующая команда использует компилятор C# для компиляции файла Sample.dll,, который ссылается на библиотеку myLib.dll, созданную в предыдущем примере.
CSC Sample.cs /reference:myLib.dll /out:Sample.dll
Следующая команда создает библиотеку типов для файла Sample.dll, ссылающегося на myLib.dll.
tlbexp Sample.dll
См. также
Ссылки
Средство регистрации сборок (Regasm.exe)
Программа импорта библиотек типов (Tlbimp.exe)