Конвертировать IDL-файл интерфейса в C#

У меня есть интерфейс, определенный в файле IDL, который я хотел бы использовать в C#. Есть ли способ преобразовать IDL во что-то полезное в C#?

3 ответов


один из способов-запустить MIDL на IDL для создания библиотеки типов (.tlb). Для этого требуется library блок в IDL. Если у вас есть .tlb, вы можете запустить tlbimp.exe на нем, чтобы получить C# definition/Interop DLL.


какие типы данных/структуры используются в IDL? Сначала вы должны определить типы данных в C# , если уже нет встроенного типа.

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

загрузить: http://download.microsoft.com/download/f/2/7/f279e71e-efb0-4155-873d-5554a0608523/CLRInsideOut2008_01.exe

эта утилита описана в доступ к константам API Windows и структуры для P / Invoke.

оригинальная статья января 2008 года теперь доступна только как .CHM скачать файл справки, связанный в нижней части https://msdn.microsoft.com/magazine/msdn-magazine-issues. На данный момент исходный код можно найти по адресуhttp://clrinterop.codeplex.com/.


например, недавно я использовал API печати XPS и нуждался в xpsobjectmodel.ч интерфейсы. Windows SDK поставляется с xpsobjectmodel.idl к счастью.

сначала я создал файл TLB с MIDL и использовал TLBIMP для создания правильной сборки DLL, готовой к добавлению в "ссылки"... раздел в мой проект c#.

обязательно используйте инструменты с правильной версией для вашей структуры проекта. e.g, Если ваша структура проекта основана на 3.5, используя tlbimp из набор инструментов 4.0 не будет работать.