如何为COM Interop库而不是程序集生成C#源代码?

时间:2011-06-01 14:38:46

标签: c# com-interop tlbimp

导入COM库时(直接使用tlbimp,或者间接使用visual studio add reference对话框),有没有办法生成C#源代码而不是像Interop.Word.dll这样的二进制互操作程序集?

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

你不能直接生成C#,但是如果你真正的问题是你需要调整互操作库那么你可能会更好运使用CLR Interop团队在codeplex上的自定义TLBIMP工具 - 它非常灵活且你有完整的资源[对它。]

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

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

答案 2 :(得分:0)

一般情况下无法完成。 C#不支持创建工作互操作程序集所需的所有可能构造。你不能添加例如属性为返回C#中的类型或方法参数,尽管有时需要它们来帮助编组人员正确翻译某些C ++类型。

此致,   Alois Kruas