You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从本地WSDL及关联独立XSD生成C#服务类?

解决本地WSDL关联XSD生成C#类的问题

我来帮你搞定这个困扰!之前我也碰到过wsdl.exe自动忽略同目录XSD文件的情况,核心原因要么是工具默认不会自动识别WSDL里的本地Schema引用,要么是引用路径配置有问题。下面给你几个亲测有效的解决方案:

方法一:强制在wsdl.exe命令中指定所有XSD文件

wsdl.exe默认只会处理你指定的WSDL文件,如果它没自动关联同目录的XSD,最直接的办法就是把所有相关文件都写进命令里。比如你的文件是MyService.wsdl、SchemaA.xsd、SchemaB.xsd,打开命令提示符(定位到文件所在目录),执行:

wsdl.exe MyService.wsdl SchemaA.xsd SchemaB.xsd /out:GeneratedClasses.cs

这里的/out参数是指定生成的C#类文件名称,这样工具就会把WSDL和两个XSD作为整体来解析,不会漏掉任何Schema定义。

方法二:检查并修正WSDL中的XSD引用路径

有时候问题出在WSDL里的Schema引用路径上。打开你的WSDL文件,找到类似这样的节点:

<xs:import namespace="http://your-custom-namespace" schemaLocation="SchemaA.xsd"/>

如果schemaLocation写的是绝对路径、网络地址,或者相对路径不正确(比如多级目录但实际XSD和WSDL在同一层),wsdl.exe就找不到文件。把它改成和WSDL同目录的文件名即可,确保路径准确。

方法三:改用SvcUtil.exe工具(更推荐)

wsdl.exe其实是比较老旧的工具了,微软更推荐使用SvcUtil.exe(属于.NET Framework的工具集),它对Schema依赖的处理更智能,还能顺便生成服务调用所需的配置文件。命令示例:

SvcUtil.exe MyService.wsdl SchemaA.xsd SchemaB.xsd /out:GeneratedService.cs /config:App.config

执行后会生成包含所有实体类和服务客户端的C#文件,还有对应的配置文件,后续调用服务会更方便。

如果XSD之间还有互相引用的情况,记得把所有依赖的XSD都加到命令里,或者确保它们的引用路径正确哦。

内容的提问来源于stack exchange,提问作者cortadillo0815

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 03:54:37