如何为COM互操作库而不是程序集生成C#源代码

本文关键字:程序集 源代码 COM 互操作 | 更新日期: 2023-09-27 17:58:04

导入COM库(直接使用tlbimp,或间接使用visual studio添加引用对话框)时,是否有一种方法可以生成C#源代码,而不是二进制互操作程序集,例如interop.Word.dll?

UPD:反射器是个坏主意。问题是,对于com接口来说,它不仅是一个签名,而且是成员的顺序。反射器此订单违反

如何为COM互操作库而不是程序集生成C#源代码

我将继续使用TLBIMP生成互操作程序集,并使用Reflector对其进行反汇编。正如您将看到的,互操作程序集中没有实际的实现代码。然后,您可以将代码(或所需的CoClasses和接口)复制并粘贴到项目中的一个新的.cs文件中。

您不能直接生成C#,但如果您真正的问题是需要调整互操作库,那么您可能会在codeplex上使用CLR互操作团队的自定义TLBIMP工具,这非常灵活,而且您有完整的源代码。]

http://clrinterop.codeplex.com/releases/view/17579

更新:如果您真的试图避免发送二进制文件,那么您可以将上述工具(以源代码格式)集成到您的项目中,以便在运行时生成此互操作库。后果没有要运送的二进制文件。

通常情况下,这是无法完成的。C#不支持创建工作互操作程序集所需的所有可能的构造。您不能在C#中向返回类型或方法参数添加例如属性,尽管有时需要它们来帮助整理器正确翻译某些C++类型。

您的,Alois Kruas