Xsd 为什么';是否将/reference选项设置为svcutil.exe工作?

Xsd 为什么';是否将/reference选项设置为svcutil.exe工作?,xsd,wsdl,svcutil.exe,Xsd,Wsdl,Svcutil.exe,我正试图使用svcutil.exe从一组.wsdl文件中仅生成服务契约(接口)。当我这样做(从http承载的wsdl)时,它会获取包含的模式并为它们生成所有代码 太好了 然而,我真正想做的是使用一组已经使用xsd.exe工具从模式文件生成的类(原因并不重要,只需说明我需要在一个程序集中包含类型,在另一个程序集中包含服务契约)。我成功地生成了一个包含所有类型的程序集 当我试图让svcutil.exe使用该程序集中的类型时,就会出现问题。我的命令行如下所示: svcutil /target:code

我正试图使用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:参数要解决的问题。然而,就我而言,它不起作用


为什么?

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


我有这个问题。我使用/r引用的二进制文件中的某些内容仍在生成的代码中重新构建。从一个服务函数返回的一个对象是返回一个datatable或其他类似的可怕的东西。我在System.Data的整个路径中添加了a/r,这就解决了它


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

这似乎正是原因所在。我希望他能更详细地解释为什么存在这种限制,但还是要感谢你的回答!您是否已尝试针对WSDL手动运行WSDL.exe以生成代理类。删除它生成的类,然后向类添加引用。