c# - SVCUTIL.EXE:有什么方法可以分离我的 Commons.xsd 类? (C#)

标签 c# xsd wsdl svcutil.exe

基本上我有以下场景:

我有 2 个 WSDL 文件:

  • 用户.wsdl
  • 客户.wsdl

这两个 wsdl 都引用了 Commons.xsd(架构),因此它们可以使用地址 ComplexType。

然后我执行 svcutil.exe "User.wsdl""Commons.xsd" 为用户 wsdl 生成代码。
然后我执行 svcutil.exe "Customer.wsdl""Commons.xsd" 生成客户 wsdl 的代码。

问题是这样的:如何让 svcutil 将 Address 放入它自己的“Commons”命名空间中?就目前而言,它会在两个输出文件(User.csCustomer.cs)中创建一个 Address 类型,这会导致名称冲突,或者如果我指定一个命名空间现在我有两个地址类型,每个都在它们自己的命名空间中,这意味着我不能在用户和客户之间传递相同的地址引用(有时用户也是客户,所以他们有相同的地址)。

有没有办法让 svcutil 将地址拆分到它自己的命名空间中?而且,如果它可以将其放入自己的文件 (Common.cs) 中,那也会很不错。但是,我看不到这样做的方法。

最佳答案

svcutil 有一个/namespace 参数,允许您将 wsdl 命名空间映射到给定的代码命名空间。你可以多次提供这个参数,但它没有很好的文档记录,所以你可能需要花很多时间来玩弄它......你可以指定一个通配符,但我不确定你是否可以挑出一个命名空间和通配符剩下的。

我对此不确定,但我认为如果您同时执行两个 wsdl,我认为它们将合并到一个 .cs 文件中......也许它足够聪明,不会在那个时候重复类点。

例如。

svcutil.exe "User.wsdl" "Customer.wsdl" "Commons.xsd"  
/n:UserAddressNamespace,User.Address  
/n:*,User

希望对您有所帮助,我希望我能给您一个更好的答案,但是我已经有很长时间没有使用 wsdl 了。

关于c# - SVCUTIL.EXE:有什么方法可以分离我的 Commons.xsd 类? (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5422435/

相关文章:

c# - 将 WSDL 导入 .NET 项目只会创建一个空的命名空间

java - 无法使用 wsimport 为 GetHotelMediaRQ 生成 wsdl JAVA

c# - OpenFileDialog 可以接收文件名 *.* 吗?

c# - 使用相同的 HttpWebRequest obj 请求第二个 url

c# - CS1061 : 'ASP.station_pages_stationfield_aspx' does not contain a definition for 'resizeIframe'

c# - XML Schema 验证 - 字段内验证

json - 如何根据 XML 架构 (XSD) 或 RelaxNG 验证 JSON?

wsdl - 将FedEx Web服务集成到.Net,停留在步骤1

c# - ASP.NET 试用网站

c# - 如何在针对 XSD 验证 XML 时修复 "Could not find schema..."错误?