Объединение двух файлов .IDL или двух файлов .tlb в один файл

У меня есть 2 .net DLL, которые я открываю для COM с помощью REGASM. Чтобы упростить ссылки в COM-клиенте, я хотел бы объединить их в один файл.

Я попытался преобразовать оба файла в IDL, а затем скопировать содержимое раздела Library одного в другой и затем скомпилировать обратно. ТЛБ с MIDL. Это хорошо работает для TypeDefs во втором IDL, но, похоже, не работает, когда дело доходит до интерфейсов, которые я скопировал. OLE / COM viewer может видеть определения интерфейса, но когда я пытаюсь использовать TLB через COM, он не может найти интерфейсы, которые я скопировал.

Я хотел убедиться, прежде чем тратить слишком много времени на это, что это на самом деле таким образом можно скудные IDL.

1
задан VividD 25 November 2014 в 17:13
поделиться

3 ответа

Итак, оказалось, что проблемы, с которыми я столкнулся, не были связаны с объединением idl.

Если вы хотите выполнить слияние с idl, вы можете сделать это, просто скопировав содержимое раздела библиотеки из одного idl в другой. Затем запустите midl для объединенного файла, чтобы превратить его в tlb.

0
ответ дан 2 September 2019 в 22:20
поделиться

Можете ли вы использовать ILMerge, чтобы сначала объединить .NET-сборки, а затем использовать REGASM на полученной сборке?

ILMerge - это утилита для объединения нескольких сборок .NET в одну .NET сборку. Она работает как с исполняемыми файлами и DLL и поставляется с несколькими опций для управления обработкой и форматом выходных данных.

1
ответ дан 2 September 2019 в 22:20
поделиться

Я не вижу очевидного способа, как это может не сработать. Вы сказали, что объединили секции библиотеки, но вы не сказали, что скопировали объявления интерфейсов из другого .idl. Это было бы очевидным, но маловероятным объяснением.

Один из вариантов отказа - когда клиентское приложение использует библиотеку типов для передачи указателей интерфейсов через границы квартиры или вне процесса. Однако для этого требуются ключи реестра в HKCR\Interfaces. .NET не создает их, вам придется сделать это самостоятельно. Если бы вы это сделали, вы бы знали, но и это не очень понятно.

1
ответ дан 2 September 2019 в 22:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: