Tlbexp.exe (программа экспорта библиотек типов)
Программа экспорта библиотек типов создает библиотеку типов, описывающую типы, определенные в сборке среды CLR.
Эта программа автоматически устанавливается вместе с Visual Studio. Для запуска этого средства используйте Командную строку разработчика или PowerShell для разработчиков в Visual Studio.
Введите в командной строке: .
Синтаксис
tlbexp assemblyName [options]
Параметры
Аргумент | Description |
---|---|
имя_сборки | Сборка, для которой экспортируется библиотека типов. |
Вариант | Описание |
---|---|
/asmpath: directory | Задает место поиска сборок. При использовании этого параметра необходимо явно указать места поиска указанных сборок, включая текущий каталог. При использовании параметра asmpath программа экспорта библиотек типов не будет искать сборку в глобальном кэше сборок. |
/help | Отображает синтаксис команд и параметров программы. |
/names: filename | Определяет регистр букв имен в библиотеке типов. Аргумент filename задает текстовый файл. Каждая строка файла определяет регистр букв одного имени в библиотеке типов. |
/nologo | Отключает отображение эмблемы Майкрософт при запуске. |
/oldnames | Задает принудительный экспорт внутренних имен типов программой Tlbexp.exe в случае конфликта имен типов. Обратите внимание, что это поведение по умолчанию в версиях до платформа .NET Framework версии 2.0. |
/out: file | Задает имя создаваемого файла библиотеки типов. Если этот параметр не задан, программа Tlbexp.exe создает библиотеку типов с именем, совпадающим с именем сборки (фактическим именем сборки, которое необязательно должно совпадать с именем файла, содержащего сборку), и расширением TLB. |
/silence: warningnumber |
Отключает отображение конкретного предупреждения. Этот параметр невозможно использовать с параметром /silent. |
/silent | Запрещает отображение сообщений об успешно выполненных операциях. Этот параметр невозможно использовать с параметром /silence. |
/tlbreference: typelibraryname | Задает принудительное явное разрешение ссылок на библиотеки типов программой Tlbexp.exe без обращений к реестру. Например, если сборка B указывает на сборку A, с помощью данного параметра можно предоставить явную ссылку на библиотеку типов, а не использовать указанную в реестре библиотеку типов. Программа Tlbexp.exe выполняет проверку версий, чтобы версия библиотеки типов соответствовала версии сборки; в противном случае выдается ошибка. Следует иметь в виду, что параметр tlbreference не отменяет обращения к реестру в тех случаях, когда атрибут ComImportAttribute применяется к интерфейсу, который впоследствии реализуется другим типом. |
/tlbrefpath: path | Полный путь к указанной библиотеке типов. |
/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 нельзя использовать для экспорта файлов метаданных Windows (WINMD). Экспорт сборок среды выполнения Windows не поддерживается.
Вся сборка преобразуется целиком. Программу 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_UNKNOWN
или 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 программа экспорта библиотек типов не выдает предупреждение или сообщение об ошибке, и неуправляемый код, в котором используется полученная библиотека типов, будет выполняться неправильно.
Примеры
Следующая команда создает библиотеку типов с таким же именем, что и у сборки, найденной в 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