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

StackOverflow https://stackoverflow.com/questions/3439279

Вопрос

У меня есть 2 .NET DLL, которую я выставляю, чтобы компить, используя RESAMY. Чтобы упростить ссылку на COM-клиенте, я хотел бы сделать их в один файл.

Я попытался преобразовать оба файла в IDL, а затем копировать содержимое раздела библиотеки одного в другую, а затем составляющую обратно к .tlb с MIDL. Это отлично работает для Typedefs в течение второго IDL, однако, кажется, не удается, когда дело доходит до интерфейсов, в которых я скопировал. OLE / COM Viewer может видеть определения интерфейса, но когда я пытаюсь использовать TLB через COM, он не может найти интерфейсы, которые Я скопировал.

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

Это было полезно?

Решение 3

Хорошо, так оказывается, что проблемы, которые я испытывал, не были связаны с объединением IDL.

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

Другие советы

Вы могли бы использовать Ilmerge Сначала комбинируйте сборы .NET и затем используйте Regasm на результирующей сборке?

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

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

Один режим отказов находится в том случае, когда клиентское приложение использует библиотеку типа к указателям интерфейса Marshal через границы квартиры или внепроцесс. Чтобы однако требуют ключей реестра в HKCR Интерфейсы. .Net не создает их, вам придется сделать это самостоятельно. Вы бы знали, если бы вы сделали, не так много объяснений.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top