本主题介绍如何使用 Svcutil.exe 中的各种开关从元数据文档生成客户端。
元数据文档可以位于持久存储上,也可以联机检索。 联机检索遵循 WS-MetadataExchange 协议或Microsoft发现(DISCO)协议。 Svcutil.exe 同时发出以下元数据请求来检索元数据:
发往所提供地址的 WS-MetadataExchange (MEX) 请求。
发往所提供地址的 MEX 请求,并追加了
/mex
。发往所提供地址的 DISCO 请求(使用 ASP.NET Web 服务中的 DiscoveryClientProtocol)。
Svcutil.exe 基于从服务收到的 Web 服务描述语言(WSDL)或策略文件生成客户端。 用户主体名称(UPN)是通过将用户名与“@”连接,然后添加完全限定的域名(FQDN)生成的。 但是,对于在 Active Directory 上注册的用户,此格式无效,该工具生成的 UPN 会导致 Kerberos 身份验证失败,并显示以下错误消息: 登录尝试失败。 若要解决此问题,请手动修复工具生成的客户端文件。
svcutil.exe [/t:code] <metadataDocumentPath>* | <url>* | <epr>
引用和共享类型
选项 | DESCRIPTION |
---|---|
/reference:<文件路径> | 引用指定程序集中的类型。 生成客户端时,使用此选项指定可能包含表示要导入的元数据类型的程序集。 短格式: /r |
/excludeType:<类型> | 指定要从引用的协定类型中排除的完全限定或程序集限定类型名称。 短格式: /et |
选择序列化程序
选项 | DESCRIPTION |
---|---|
/serializer:Auto | 自动选择序列化程序。 此操作使用 DataContract 序列化程序。 如果失败,则使用XmlSerializer 。短格式: /ser:Auto |
/serializer:DataContractSerializer | 生成使用 DataContract 序列化程序进行序列化和反序列化的数据类型。短格式: /ser:DataContractSerializer |
/serializer:XmlSerializer | 生成通过 XmlSerializer 进行序列化和反序列化的数据类型。短格式: /ser:XmlSerializer |
/importXmlTypes | 将 DataContract 序列化程序配置为将非DataContract 类型导入为 IXmlSerializable 类型。短格式: /ixt |
/dataContractOnly | 只为 DataContract 类型生成代码。 生成 ServiceContract 类型。应仅指定用于此选项的本地元数据文件。 短格式: /dconly |
为客户端选择语言
选项 | DESCRIPTION |
---|---|
/language:<语言> | 指定要用于生成代码的编程语言。 提供在 Machine.config 文件中注册的语言名称或从 CodeDomProvider 继承的类的完全限定名称。 值:c#、cs、csharp、vb、vbs、visualbasic、vbscript、javascript、c++、mc、cpp 默认值:csharp 短格式: /l 有关详细信息,请参阅 CodeDomProvider 类。 |
为客户端选择命名空间
选项 | DESCRIPTION |
---|---|
/namespace:<字符串,字符串> | 指定从 WSDL 或 XML 架构 targetNamespace 到公共语言运行时 (CLR) 命名空间的映射。 将通配符 (*) 用于 targetNamespace 将映射所有 targetNamespaces ,而不显式映射到该 CLR 命名空间。若要确保消息合同名称与操作名称不冲突,请使用双冒号( :: )限定类型的引用,或确保名称唯一。默认设置:派生自 DataContracts 的架构文档的目标命名空间。 默认命名空间用于所有其他生成的类型。短格式: /n |
选择数据绑定
选项 | DESCRIPTION |
---|---|
/enableDataBinding | 在所有DataContract 类型上实现INotifyPropertyChanged接口以启用数据绑定。短格式: /edb |
生成配置
选项 | DESCRIPTION |
---|---|
/config:<configFile> | 指定生成的配置文件的文件名。 默认值:output.config |
/mergeConfig | 将生成的配置合并到现有文件中,而不是覆盖现有文件。 |
/noConfig | 不要生成配置文件。 |