【问题标题】:Why doesn't the /reference option to svcutil.exe work?为什么 svcutil.exe 的 /reference 选项不起作用?
【发布时间】:2011-04-07 12:06:55
【问题描述】:

我正在尝试使用 svcutil.exe 从一组 .wsdl 文件中仅生成服务合同(接口)。当我这样做时(来自 http 托管的 wsdl),它会选择包含的模式并为它们生成所有代码。

太棒了。

然而,我真正想要做的是使用一组已经使用 xsd.exe 工具从架构文件生成的类(这样做的原因并不重要,就足够了说我需要在一个程序集中拥有类型,在另一个程序集中拥有服务合同)。我成功地生成了一个包含所有类型的程序集。

当我尝试让 svcutil.exe 使用该程序集中的类型时,就会出现问题。我的命令行如下所示:

svcutil /target:code /noconfig /reference:my_types.dll http://path/to/wsdl

这工作正常,但生成的代码包含 my_types.dll 文件中所有类型的重复项。我从 svcutil.exe 的文档中了解到,这正是 /reference: 参数要克服的问题。然而,就我而言,它不起作用。

为什么?

【问题讨论】:

    标签: xsd wsdl svcutil.exe


    【解决方案1】:

    显然它只适用于 DataContract 类型而不适用于 XmlSerializer 类型。

    Link

    【讨论】:

    • 这似乎正是原因。我希望他能更详细地说明为什么存在这种限制,但仍然感谢您的回答!
    • 您是否尝试过针对您的 WSDL 手动运行 WSDL.exe 以生成代理类。删除它生成的类,然后添加对您的类的引用。
    【解决方案2】:

    我遇到了这个问题。我用 /r 引用的二进制文件中的某些内容仍在生成的代码中再次构建。从服务函数之一返回的对象之一是返回数据表或其他类似的可怕东西。我在 System.Data 的整个路径中添加了 /r 并修复了它。

    /r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5.2\System.Data.dll"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-25
      • 1970-01-01
      • 1970-01-01
      • 2018-09-07
      • 2015-02-18
      • 1970-01-01
      • 1970-01-01
      • 2012-01-08
      相关资源
      最近更新 更多