【问题标题】:svcutils and class COM visiblesvcutils 和 COM 类可见
【发布时间】:2019-02-02 04:40:43
【问题描述】:

我有一个公开一个类的 WSDL 服务。 使用 svcutils 我得到了我需要的课程。 问题是此类必须从引用 WSDL 的 DLL .NET 的 VB6 客户端可见。 从 VB6 我可以看到类但看不到它的属性,所以我没有启用智能感知。 如何告诉 svcutil 导出 GUID(或更多)以让类可见 COM? 谢谢

【问题讨论】:

  • 你根本不应该看到它。但是您可能使用了大锤方法并勾选了“使程序集 COM 可见”复选框。它公开了项目中可见的每个公共类,它依赖于 [ClassInterface] 的默认值。故意将其调至 ClassInterfaceType.AutoDispatch,因为这样做非常危险。您必须在客户端代码中使用后期绑定以避免 DLL Hell 的主要危害,其后果之一是自动完成功能不再在 VBA 编辑器中起作用。只是不要这样做,用你自己的包装器包装 WSDL 对象。

标签: class dll com


【解决方案1】:

COM 和 WSDL(WebService) 是独立的技术,它们之间没有直接的合作。

您需要自己创建一个程序在它们之间进行中继。

如果您可以将 WSDL 转换为 WCF 协定,则可以通过创建一个用 C# 调用 WebService 的程序并将其放入 COM 可以调用的格式从 VB6 调用它。

在这种情况下,您需要自己组装 GUID、IDL 等。
概述和方法请参考以下文章。
Interoperability (C# Programming Guide)
Exposing .NET Framework Components to COM

但是,请注意,并非总是可以将 WSDL 转换为 WCF 合同。在这种情况下,您需要创建一个从头开始或使用其他技术访问 WebService 的程序。

【讨论】:

    猜你喜欢
    • 2011-07-13
    • 2011-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 2011-01-15
    相关资源
    最近更新 更多