我有2个.NET DLL使用Regasm将其暴露于COM。为了简化COM客户端中的引用,我想将它们放入一个文件中。

我已经尝试将两个文件转换为IDL,然后将一个库部分的内容复制到另一个库的内容,然后用MIDL编译为.tlb。对于第二个IDL中的Typedefs来说,这正常工作,但是当涉及我复制的接口时,似乎失败了。OLE/COM查看器可以看到接口定义,但是当我尝试通过COM使用TLB时,它无法找到该接口的接口。我复制了。

我想在花太多时间上花费太多时间之前确保,实际上可以通过这种方式缩小IDL。

有帮助吗?

解决方案 3

好的,事实证明,我遇到的问题与合并IDL无关。

如果您想合并到IDL,则可以通过简单地将一个IDL中的库部分的内容复制到另一个IDL中的内容。然后在合并文件上运行MIDL以将其转换为TLB。

其他提示

你可以使用吗? ilmerge 首先将.NET组件组合在一起,然后在结果组件上使用Remasm?

ilmerge是将多个.NET组件合并到单个.NET组件中的实用程序。它在可执行文件和DLLS上都可以使用,并提供多种控制输出处理和格式的选项。

我看不出这将失败的明显方法。您说您合并了图书馆部分,但您没有说您从另一个.idl复制了接口声明。这将是一个明显但不可能的解释。

一个故障模式是,当客户端应用使用类型库将跨公寓边界或进出外的元帅指针进行元帅指针时。但是,这需要HKCR 接口中的注册表键。 .NET不会创建它们,您必须自己做。您会知道您是否这样做,也不是什么解释。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top