Поделиться через


Tlbexp.exe (программа экспорта библиотек типов)

Программа экспорта библиотек типов создает библиотеку типов, описывающую типы, определенные в сборке среды CLR.

Эта программа автоматически устанавливается вместе с Visual Studio. Для запуска этого средства используйте Командную строку разработчика или PowerShell для разработчиков в Visual Studio.

Введите в командной строке: .

Синтаксис

tlbexp assemblyName [options]

Параметры

Аргумент Description
имя_сборки Сборка, для которой экспортируется библиотека типов.
Вариант Description
/asmpath:directory Задает место поиска сборок. При использовании этого параметра необходимо явно указать места поиска указанных сборок, включая текущий каталог.

При использовании asmpath параметра экспортер библиотек типов не будет искать сборку в глобальном кэше сборок (GAC).
/help Отображает синтаксис команд и параметров программы.
/names:filename Определяет регистр букв имен в библиотеке типов. Аргумент filename задает текстовый файл. Каждая строка файла определяет регистр букв одного имени в библиотеке типов.
/nologo Отключает отображение эмблемы Майкрософт при запуске.
/oldnames Задает принудительный экспорт внутренних имен типов программой Tlbexp.exe в случае конфликта имен типов. Обратите внимание, что это поведение по умолчанию в версиях до платформа .NET Framework версии 2.0.
/out:file Задает имя создаваемого файла библиотеки типов. Если этот параметр не задан, программа Tlbexp.exe создает библиотеку типов с именем, совпадающим с именем сборки (фактическим именем сборки, которое необязательно должно совпадать с именем файла, содержащего сборку), и расширением TLB.
/тишина: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

См. также