Herramienta de utilidad de metadatos de ServiceModel (Svcutil.exe)ServiceModel Metadata Utility Tool (Svcutil.exe)

La herramienta de utilidad de metadatos de ServiceModel se usa para generar código de modelo de servicio a partir de documentos de metadatos y documentos de metadatos del código del modelo de servicio.The ServiceModel Metadata Utility tool is used to generate service model code from metadata documents, and metadata documents from service model code.

SvcUtil.exeSvcUtil.exe

La herramienta de utilidad de metadatos de ServiceModel se puede encontrar en la ubicación de instalación de Windows SDK, concretamente %ProgramFiles%\Microsoft SDKs\Windows\v6.0\Bin.The ServiceModel Metadata Utility Tool can be found at the Windows SDK installation location, specifically %ProgramFiles%\Microsoft SDKs\Windows\v6.0\Bin.

FuncionalidadesFunctionalities

En la tabla siguiente se resumen las distintas funcionalidades proporcionadas por esta herramienta y el tema correspondiente en el que se explica cómo se usa:The following table summarizes the various functionalities provided by this tool, and the corresponding topic that discusses how it is used:

TareaTask TemaTopic
Genera código a partir de servicios en ejecución o de documentos de metadatos estáticos.Generates code from running services or static metadata documents. Generación de un cliente WCF a partir de los metadatos de servicioGenerating a WCF Client from Service Metadata
Exporta documentos de metadatos a partir del código compilado.Exports metadata documents from compiled code. Uso de Svcutil.exe para exportar metadatos desde el código de servicio compiladoHow to: Use Svcutil.exe to Export Metadata from Compiled Service Code
Valida el código de servicio compilado.Validates compiled service code. Uso de Svcutil.exe para validar el código del servicio compiladoHow to: Use Svcutil.exe to Validate Compiled Service Code
Descarga los documentos de metadatos de los servicios en ejecución.Downloads metadata documents from running services. Uso de Svcutil.exe para descargar los documentos de metadatosHow to: Use Svcutil.exe to Download Metadata Documents
Genera el código de serialización.Generates serialization code. Mejora del tiempo de inicio de las aplicaciones cliente WCF mediante XmlSerializerHow to: Improve the Startup Time of WCF Client Applications using the XmlSerializer

Precaución

SvcUtil sobrescribe los archivos existentes en un disco si los nombres proporcionados como parámetros son idénticos.Svcutil overwrites existing files on a disk if the names supplied as parameters are identical. Esto puede incluir archivos de código, configuración o archivos de metadatos.This can include code files, configuration, or metadata files. Para evitar esto al generar archivos de código y de configuración, utilice el modificador /mergeConfig.To avoid this when generating code and configuration files, use the /mergeConfig switch.

Además, los conmutadores /r y /ct para los tipos de referencia son para generar contratos de datos.In addition, the /r and /ct switches for referencing types are for generating data contracts. Estos modificadores no funcionan al utilizar XmlSerializer.These switches do not work when using XmlSerializer.

Tiempo de esperaTimeout

La herramienta tiene un tiempo de espera de cinco minutos al recuperar los metadatos.The tool has a five minute timeout when retrieving metadata. Este tiempo de espera sólo se aplica a la recuperación de metadatos a través de la red.This timeout only applies to retrieving metadata over the network. No se aplica a cualquier procesamiento de esos metadatos.It does not apply to any processing of that metadata.

Compatibilidad con múltiples versionesMulti-targeting

La herramienta no es compatible con múltiples versiones.The tool does not support multi-targeting. Si desea generar un artefacto de .NET 4 desde SvcUtil. exe, utilice SvcUtil. exe desde el SDK de .net 4.If you want to generate a .NET 4 artifact from svcutil.exe, use the svcutil.exe from the .NET 4 SDK. Para generar un artefacto de .NET 3.5, use el ejecutable del SDK de .NET 3.5.To generate a .NET 3.5 artifact, use the executable from the .NET 3.5 SDK.

Acceso a documentos WSDLAccessing WSDL Documents

Cuando utiliza Svcutil para obtener acceso a un documento WSDL que contiene una referencia a un servicio de token de seguridad (STS), Svcutil realiza una llamada WS-MetadataExchange al STS.When you use Svcutil to access a WSDL document that has a reference to a security token service (STS), Svcutil makes a WS-MetadataExchange call to the STS. Sin embargo, el servicio puede exponer sus documentos WSDL mediante WS-MetadataExchange o HTTP GET.However, the service can expose its WSDL documents using either WS-MetadataExchange or HTTP GET. Por lo tanto, si el STS solo ha expuesto el documento WSDL mediante HTTP GET, se producirá un error en un cliente escrito en WinFX.Therefore, if the STS has only exposed the WSDL document using HTTP GET, a client written in WinFX will fail. En el caso de los clientes escritos en .NET Framework 3,5.NET Framework 3.5, SvcUtil intenta usar WS-MetadataExchange y HTTP GET para obtener el WSDL de STS.For clients written in .NET Framework 3,5.NET Framework 3.5, Svcutil attempts to use both WS-MetadataExchange and HTTP GET to obtain the STS WSDL.

Utilizar Svcutil.exeUsing SvcUtil.exe

Usos comunesCommon Usages

En la tabla siguiente se muestran algunas opciones de uso frecuente de esta herramienta:The following table shows some commonly used options for this tool:

OpciónOption DescripciónDescription
/Directory: @no__t 0directory >/directory:<directory> Directorio en el que se crearán los archivos.Directory to create files in.

Valor predeterminado: el directorio actual.Default: The current directory.

Forma abreviada: /dShort form: /d
/help/help Muestra la sintaxis de comandos y las opciones de la herramienta.Displays the command syntax and options for the tool.

Forma abreviada: /?Short form: /?
/noLogo/noLogo Suprime el mensaje del banner y el copyright.Suppress the copyright and banner message.
/svcutilConfig: <configFile >/svcutilConfig:<configFile> Especifica un archivo de configuración personalizado para utilizar en lugar del archivo App.config.Specifies a custom configuration file to use instead of the App.config file. Esto se puede utilizar para registrar extensiones system.serviceModel sin modificar el archivo de configuración de la herramienta.This can be used to register system.serviceModel extensions without altering the tool's configuration file.
/target: @no__t tipo de 0output >/target:<output type> Especifica la salida que va a generar la herramienta.Specifies the output to be generated by the tool.

Los valores válidos son código, metadatos o xmlSerializer.Valid values are code, metadata or xmlSerializer.

Forma abreviada: /tShort form: /t

Generación de códigoCode Generation

Svcutil.exe puede generar el código para los contratos de servicios, clientes y tipos de datos a partir de documentos de metadatos.Svcutil.exe can generate code for service contracts, clients and data types from metadata documents. Estos documentos de metadatos pueden estar en un almacenamiento duradero o recuperarse en línea.These metadata documents can be on a durable storage, or be retrieved online. La recuperación en línea sigue el protocolo de WS-Metadata Exchange o el protocolo DISCO (para obtener detalles, vea la sección Descarga de metadatos).Online retrieval follows either the WS-Metadata Exchange protocol or the DISCO protocol (for details see the Metadata Download section).

Puede usar la herramienta SvcUtil. exe para generar contratos de datos y de servicio basados en un documento WSDL predefinido.You can use the SvcUtil.exe tool to generate service and data contracts based on a predefined WSDL document. Use el modificador /serviceContract y especifique una dirección URL o una ubicación de archivo donde el documento de WSDL se puede descargar o encontrar.Use the /serviceContract switch and specify a URL or file location where the WSDL document can be downloaded or found. Esto genera el servicio y los contratos de datos definidos en el documento WSDL que se pueden usar para implementar un servicio de quejas.This generates the service and data contracts defined in the WSDL document that can then be used to implement a complaint service. Para obtener más información, vea Cómo: recuperar metadatos e implementar un servicio conforme.For more information, see How to: Retrieve Metadata and Implement a Compliant Service.

Para un servicio con un punto de conexión de BasicHttpContextBinding, SvcUtil. exe genera BasicHttpBinding con el atributo allowCookies establecido en true en su lugar.For a service with a BasicHttpContextBinding endpoint, Svcutil.exe generates a BasicHttpBinding with the allowCookies attribute set to true instead. Las cookies se utilizan para el contexto del servidor.The cookies are used for context on the server. Si desea administrar el contexto del cliente cuando el servicio utiliza cookies, puede modificar manualmente la configuración para usar un enlace de contexto.If you would like to manage context on the client when the service uses cookies, you can manually modify the configuration to use a context binding.

Precaución

Svcutil.exe genera el cliente basado en el WSDL o en el archivo de directivas recibido del servicio.Svcutil.exe generates the client based on the WSDL or policy file received from the service. El nombre principal de usuario (UPN) se genera concatenando el nombre de usuario, "@" y un nombre de dominio completo (FQDN).The user principal name (UPN) is generated by concatenating username, "@" and a fully-qualified domain name (FQDN). Sin embargo, para los usuarios que se registraron en Active Directory, este formato no es válido y el UPN generado por la herramienta produce un error en la autenticación de Kerberos con el mensaje de error "El intento de inicio de sesión ha producido un error."However, for users who registered on Active Directory, this format is not valid and the UPN generated by the tool causes a failure in Kerberos authentication with the error message "The logon attempt failed". Para resolver este problema, debe corregir manualmente el archivo de cliente generado por esta herramienta.To resolve this problem, you should manually fix the client file generated by this tool.

svcutil.exe [/t:code] <metadataDocumentPath>* | <url>* | <epr>

ArgumentoArgument DescripciónDescription
epr La ruta de acceso a un archivo XML que contiene un WS-Addressing EndpointReference para un extremo de servicio compatible con WS-Metadata Exchange.The path to an XML file that contains a WS-Addressing EndpointReference for a service endpoint that supports WS-Metadata Exchange. Para obtener más información, vea la sección Descarga de metadatos.For more information, see the Metadata Download section.
metadataDocumentPath Ruta de acceso a un documento de metadatos (WSDL o xsd) que contiene el contrato que se va a importar en el código (. wsdl,. xsd,. wspolicy o. wsmex).The path to a metadata document (wsdl or xsd) that contains the contract to import into code (.wsdl, .xsd, .wspolicy, or .wsmex).

Svcutil sigue importaciones e inclusiones al especificar una dirección URL remota para los metadatos.Svcutil follows imports and includes when you specify a remote URL for metadata. Sin embargo, si desea procesar los archivos de metadatos en el sistema de archivos local, debe especificar todos los archivos en este argumento.However, if you want to process metadata files on the local file system, you must specify all files in this argument. De esta manera, puede usar Svcutil en un entorno de compilación donde no puede tener dependencias de red.In this way, you can use Svcutil in a build environment where you cannot have network dependencies. Puede usar caracteres comodín (*. xsd, @no__t -0. WSDL) para este argumento.You can use wildcards (*.xsd, *.wsdl) for this argument.
url La dirección URL a un extremo de servicio que proporciona metadatos o a un documento de metadatos hospedado en línea.The URL to a service endpoint that provides metadata or to a metadata document hosted online. Para obtener más información sobre cómo se recuperan estos documentos, vea la sección Descarga de metadatos.For more information on how these documents are retrieved, see the Metadata Download section.
OpciónOption DescripciónDescription
/async/async Genera firmas del método sincrónicas y asincrónicas.Generates both synchronous and asynchronous method signatures.

Valor predeterminado: generar solo firmas de método sincrónicas.Default: generate only synchronous method signatures.

Forma abreviada: /aShort Form: /a
/collectionType: <type >/collectionType:<type> Especifica el tipo de colección de lista para un cliente de WCF.Specifies the list collection type for a WCF client.

Valor predeterminado: el tipo de colección es System. Array.Default: collection type is System.Array.

Forma abreviada: /ctShort Form: /ct
/config: @no__t 0configFile >/config:<configFile> Especifica el nombre de archivo para el archivo de configuración generado.Specifies the filename for the generated configuration file.

Valor predeterminado: output.configDefault: output.config
/dataContractOnly/dataContractOnly Genera código solo para tipos de contrato de datos.Generates code for data contract types only. No se generan los tipos del contrato de servicio.Service Contract types are not generated.

Solo debería especificar archivos de metadatos locales para esta opción.You should only specify local metadata files for this option.

Forma abreviada: /dconlyShort Form: /dconly
/enableDataBinding/enableDataBinding Implementa la interfaz INotifyPropertyChanged en todos los tipos de contrato de datos para habilitar el enlace de datos.Implements the INotifyPropertyChanged interface on all Data Contract types to enable data binding.

Forma abreviada: /edbShort Form: /edb
/excludeType: <type >/excludeType:<type> Especifica un nombre de tipo completo o calificado con el nombre de ensamblado que se va a excluir de los tipos de contrato a los que se hace referencia.Specifies a fully-qualified or assembly-qualified type name to be excluded from referenced contract types.

Al utilizar este modificador junto con /r de DLL independientes, se hace referencia al nombre completo de la clase XSD.When using this switch together with /r from separate DLLs, the full name of the XSD class is referenced.

Forma abreviada: /etShort Form: /et
/importXmlTypes/importXmlTypes Configura el serializador de contratos de datos para importar tipos que no son de contratos de datos como tipos IXmlSerializable.Configures the Data Contract serializer to import non-Data Contract types as IXmlSerializable types.
/internal/internal Genera clases que están marcadas como internas.Generates classes that are marked as internal. Valor predeterminado: generar solo clases públicas.Default: generate public classes only.

Forma abreviada: /iShort Form: /i
/Language: <language >/language:<language> Especifica el lenguaje de programación a utilizar para la generación de código.Specifies the programming language to use for code generation. Debe proporcionar un nombre de lenguaje registrado en el archivo Machine. config o el nombre completo de una clase que herede de CodeDomProvider.You should provide either a language name registered in the Machine.config file, or the fully qualified name of a class that inherits from CodeDomProvider.

Valores: c#, cs, csharp, vb, visualbasic, c++, cppValues: c#, cs, csharp, vb, visualbasic, c++, cpp

Valor predeterminado: csharpDefault: csharp

Forma abreviada: /lShort form: /l
/mergeConfig/mergeConfig Combina la configuración generada en un archivo existente en lugar de sobrescribir el archivo existente.Merges the generated configuration into an existing file, instead of overwriting the existing file.
/messageContract/messageContract Genera tipos de contrato de mensaje.Generates Message Contract types.

Forma abreviada: /mcShort Form: /mc
/namespace: <string, cadena >/namespace:<string,string> Especifica una asignación de un targetNamespace WSDL o esquema XML a un espacio de nombres CLR.Specifies a mapping from a WSDL or XML Schema targetNamespace to a CLR namespace. El uso de ' * ' para el targetNamespace asigna todos los targetNamespaces sin una asignación explícita a ese espacio de nombres CLR.Using '*' for the targetNamespace maps all targetNamespaces without an explicit mapping to that CLR namespace.

Para asegurarse de que el nombre de contrato de mensaje no produce una colisión con el nombre de la operación, debería calificar la referencia del tipo con :: o asegurarse de que los nombres son únicos.To make sure that the message contract name does not collide with operation name, you should either qualify the type reference with ::, or make sure the names are unique.

Valor predeterminado: Se deriva del espacio de nombres de destino del documento de esquema para contratos de datos.Default: Derived from the target namespace of the schema document for Data Contracts. El espacio de nombres predeterminado se utiliza para todos los otros tipos generados.The default namespace is used for all other generated types.

Forma abreviada: /n Nota: al generar los tipos que se van a usar con XmlSerializer, solo se admite una única asignación de espacio de nombres.Short Form: /n Note: When generating types to use with XmlSerializer, only a single namespace mapping is supported. Todos los tipos generados estarán en el espacio de nombres predeterminado o en el espacio de nombres especificado por ' * '.All generated types will either be in the default namespace or the namespace specified by '*'.
/noConfig/noConfig No generar archivos de configuración.Do not generate configuration files.
/noStdLib/noStdLib No hacer referencia a las bibliotecas estándar.Do not reference standard libraries.

Valor predeterminado: Se hace referencia a Mscorlib.dll y a System.servicemodel.dll.Default: Mscorlib.dll and System.servicemodel.dll are referenced.
/out: <file >/out:<file> Especifica el nombre de archivo para el código generado.Specifies the file name for the generated code.

Valor predeterminado: Se deriva del nombre de definición de WSDL, nombre de servicio de WSDL o espacio de nombres de destino de uno de los esquemas.Default: Derived from the WSDL definition name, WSDL service name or target namespace of one of the schemas.

Forma abreviada: /oShort form: /o
/Reference: @no__t ruta de acceso de 0file >/reference:<file path> Tipos de referencia en el ensamblado especificado.References types in the specified assembly. Al generar clientes, utilice esta opción para especificar ensamblados que podrían contener tipos que representan los metadatos que se están importando.When generating clients, use this option to specify assemblies that might contain types that represent the metadata being imported.

No puede especificar contratos de mensaje y los tipos XmlSerializer utilizando este modificador.You cannot specify message contracts and XmlSerializer types using this switch.

Si se hace referencia a DateTimeOffset, se utiliza este tipo en lugar de generar un tipo nuevo.If DateTimeOffset referenced, this type is used instead of generating a new type. Si la aplicación se escribe utilizando .NET Framework 3,5.NET Framework 3.5, SvcUtil.exe hace referencia a DateTimeOffset de forma automática.If the application is written using .NET Framework 3,5.NET Framework 3.5, SvcUtil.exe references DateTimeOffset automatically.

Forma abreviada: /rShort Form: /r
/serializable/serializable Genera clases marcadas con el atributo Serializable.Generates classes marked with the Serializable Attribute.

Forma abreviada: /sShort Form: /s
/serviceContract/serviceContract Genera código para contratos de servicio únicamente.Generate code for service contracts only. La clase de cliente y la configuración no se generaránClient class and configuration will not be generated

Forma abreviada: /scShort Form: /sc
/serializer:Auto/serializer:Auto Seleccionar automáticamente el serializador.Automatically select the serializer. Intenta usar el serializador de contrato de datos y usa XmlSerializer si se produce un error.This tries to use the Data Contract serializer and uses the XmlSerializer if that fails.

Forma abreviada: /serShort Form: /ser
/serializer:DataContractSerializer/serializer:DataContractSerializer Genera tipos de datos que utilizan el serializador de contratos de datos para la serialización y deserialización.Generates data types that use the Data Contract Serializer for serialization and deserialization.

Forma abreviada: /ser:DataContractSerializerShort Form: /ser:DataContractSerializer
/serializer:XmlSerializer/serializer:XmlSerializer Genera tipos de datos que usan el XmlSerializer para la serialización y deserialización.Generates data types that use the XmlSerializer for serialization and deserialization.

Forma abreviada: /ser:XmlSerializerShort Form: /ser:XmlSerializer
/targetClientVersion/targetClientVersion Especifique la versión de .NET Framework de destino de la aplicación.Specify which version of .NET Framework the application is targeting. Los valores válidos son Version30 y Version35.Valid values are Version30 and Version35. El valor predeterminado es Version30.The default value is Version30.

Forma abreviada: /tcvShort Form: /tcv

Version30: Use /tcv:Version30 Si va a generar código para clientes que usan WinFX.Version30: Use /tcv:Version30 if you are generating code for clients that use WinFX.

Version35: utilice /tcv:Version35 si está generando código para clientes que usan .NET Framework 3,5.NET Framework 3.5.Version35: Use /tcv:Version35 if you are generating code for clients that use .NET Framework 3,5.NET Framework 3.5. Al utilizar /tcv:Version35 con el modificador /async, se generan tanto el método asincrónico basado en evento como el método asincrónico de devolución de llamada/basado en delegado.When using /tcv:Version35 with the /async switch, both event-based and callback/delegate-based asynchronous methods are generated. Además, está habilitada la compatibilidad para conjuntos de datos habilitados por LINQ y DateTimeOffset.In addition, support for LINQ-enabled DataSets and DateTimeOffset is enabled.
/wrapped/wrapped Controla si se utiliza una grafía especial en los documentos con estilo de literales de documento con parámetros ajustados.Controls whether special-casing is used for document-literal styled documents with wrapped parameters. Use el modificador /wrapped con la herramienta de utilidad de metadatos del modelo de servicio (SvcUtil. exe) para especificar la grafía normal.Use the /wrapped switch with the Service Model Metadata Utility Tool (Svcutil.exe) tool to specify normal casing.

Nota

Cuando el enlace de servicio es uno de los enlaces proporcionados por el sistema (consulte los enlaces proporcionados por el sistema) y la propiedad ProtectionLevel está establecida en None o Sign, SvcUtil genera un archivo de configuración con el <customBinding > en lugar del elemento esperado proporcionado por el sistema.When the service binding is one of the system-provided bindings (see System-Provided Bindings), and the ProtectionLevel property is set to either None or Sign, Svcutil generates a configuration file using the <customBinding> element instead of the expected system-provided element. Por ejemplo, si el servicio utiliza el elemento <wsHttpBinding> con ProtectionLevel establecido en Sign, la configuración generada tiene <customBinding> en la sección de enlaces en lugar de <wsHttpBinding>.For example, if the service uses the <wsHttpBinding> element with the ProtectionLevel set to Sign, the generated configuration has <customBinding> in the bindings section instead of <wsHttpBinding>. Para obtener más información sobre el nivel de protección, vea Descripción del nivel de protección.For more information about the protection level, see Understanding Protection Level.

Exportación de metadatosMetadata Export

Svcutil.exe puede exportar metadatos para los servicios, contratos y tipos de datos en ensamblados compilados.Svcutil.exe can export metadata for services, contracts and data types in compiled assemblies. Para exportar los metadatos para un servicio, debe utilizar la opción /serviceName para especificar el servicio que desea exportar.To export metadata for a service, you must use the /serviceName option to specify the service you would like to export. Para exportar todos los tipos de contrato de datos dentro de un ensamblado, debe utilizar la opción /dataContractOnly.To export all data contract types within an assembly, you should use the /dataContractOnly option. De forma predeterminada, los metadatos se exportan para todos los contratos de servicios en los ensamblados de entrada.By default, metadata is exported for all service contracts in the input assemblies.

svcutil.exe [/t:metadata] [/serviceName:<serviceConfigName>] [/dataContractOnly] <assemblyPath>*

ArgumentoArgument DescripciónDescription
assemblyPath Especifica la ruta de acceso a un ensamblado que contiene los servicios, contratos o tipos de contrato de datos a exportar.Specifies the path to an assembly that contains services, contracts or data contract types to be exported. Los caracteres comodín de la línea de comandos estándar se pueden utilizar para proporcionar varios archivos como entrada.Standard command line wildcards can be used to provide multiple files as input.
OpciónOption DescripciónDescription
/serviceName: <serviceConfigName >/serviceName:<serviceConfigName> Especifica el nombre de configuración de un servicio que se va a exportar.Specifies the configuration name of a service to be exported. Si se utiliza esta opción, se debe pasar un ensamblado ejecutable con un archivo de configuración asociado como entrada.If this option is used, an executable assembly with an associated configuration file must be passed as input. Svcutil.exe busca la configuración de servicio en todos los archivos de configuración asociados.Svcutil.exe searches all associated configuration files for the service configuration. Si los archivos de configuración contienen cualquier tipo de extensión, los ensamblados que contienen estos tipos deben estar en la GAC o indicados de forma explícita mediante la opción /reference.If the configuration files contain any extension types, the assemblies that contain these types must either be in the GAC or explicitly provided using the /reference option.
/Reference: @no__t ruta de acceso de 0file >/reference:<file path> Agrega el ensamblado especificado al conjunto de ensamblados utilizados para resolver las referencias de tipo.Adds the specified assembly to the set of assemblies used for resolving type references. Si está exportando o validando un servicio registrado en configuración que utiliza extensiones de terceros (Comportamientos, Enlaces y Elementos de enlace), utilice esta opción para buscar ensamblados de extensión que no están en la GAC.If you are exporting or validating a service that uses 3rd-party extensions (Behaviors, Bindings and BindingElements) registered in configuration, use this option to locate extension assemblies that are not in the GAC.

Forma abreviada: /rShort Form: /r
/dataContractOnly/dataContractOnly Solo funciona en tipos de contrato de datos.Operates on data contract types only. No se procesan los contratos de servicios.Service Contracts are not processed.

Solo debería especificar archivos de metadatos locales para esta opción.You should only specify local metadata files for this option.

Forma abreviada: /dconlyShort Form: /dconly
/excludeType: <type >/excludeType:<type> Especifica el nombre completo o calificado con el ensamblado de un tipo que se va a excluir de la exportación.Specifies the fully-qualified or assembly-qualified name of a type to be excluded from export. Se puede utilizar esta opción al exportar los metadatos para un servicio o un conjunto de contratos de servicios excluyan tipos de la exportación.This option can be used when exporting metadata for a service, or a set of service contracts to exclude types from being exported. Esta opción no se puede combinar con la opción /dconly.This option cannot be used together with the /dconly option.

Si tiene un ensamblado único que contiene varios servicios y cada uno usa clases independientes con el mismo nombre XSD, debería especificar el nombre del servicio en lugar del nombre de clase XSD para este modificador.When you have a single assembly containing multiple services, and each uses separate classes with the same XSD name, you should specify the service name instead of the XSD class name for this switch.

No se admiten XSD o tipos de contrato de datos.XSD or data contract types are not supported.

Forma abreviada: /etShort Form: /et

Validación del servicioService Validation

La validación se puede utilizar para detectar errores en implementaciones del servicio sin hospedar el servicio.Validation can be used to detect errors in service implementations without hosting the service. Debe utilizar la opción /serviceName para indicar el servicio que desea validar.You must use the /serviceName option to indicate the service you want to validate.

svcutil.exe /validate /serviceName:<serviceConfigName> <assemblyPath>*

ArgumentoArgument DescripciónDescription
assemblyPath Especifica la ruta de acceso a un ensamblado que contiene tipos de servicio que hay que validar.Specifies the path to an assembly that contains service types to be validated. El ensamblado debe tener un archivo de configuración asociado para proporcionar la configuración de servicio.The assembly must have an associated configuration file to provide service configuration. Los caracteres comodín de la línea de comandos estándar se pueden utilizar para proporcionar varios ensamblados.Standard command-line wildcards can be used to provide multiple assemblies.
OpciónOption DescripciónDescription
/validate/validate Valida una implementación del servicio especificada por la opción /serviceName.Validates a service implementation specified by the /serviceName option. Si se utiliza esta opción, se debe pasar un ensamblado ejecutable con un archivo de configuración asociado como entrada.If this option is used, an executable assembly with an associated configuration file must be passed as input.

Forma abreviada: /vShort Form: /v
/serviceName: <serviceConfigName >/serviceName:<serviceConfigName> Especifica el nombre de configuración de un servicio que se va a validar.Specifies the configuration name of a service to be validated. Svcutil.exe busca la configuración de servicio en todos los archivos de configuración asociados de todos los ensamblados de entrada.Svcutil.exe searches all associated configuration files of all input assemblies for the service configuration. Si los archivos de configuración contienen cualquier tipo de extensión, los ensamblados que contienen estos tipos deben estar en la GAC o indicados de forma explícita mediante la opción /reference.If the configuration files contain any extension types, the assemblies that contains these types must either be in the GAC or explicitly provided using the /reference option.
/Reference: @no__t ruta de acceso de 0file >/reference:<file path> Agrega el ensamblado especificado al conjunto de ensamblados utilizados para resolver las referencias de tipo.Adds the specified assembly to the set of assemblies used for resolving type references. Si está exportando o validando un servicio registrado en configuración que utiliza extensiones de terceros (Comportamientos, Enlaces y Elementos de enlace), utilice esta opción para buscar ensamblados de extensión que no están en la GAC.If you are exporting or validating a service that uses 3rd-party extensions (Behaviors, Bindings and BindingElements) registered in configuration, use this option to locate extension assemblies that are not in the GAC.

Forma abreviada: /rShort Form: /r
/dataContractOnly/dataContractOnly Solo funciona en tipos de contrato de datos.Operates on data contract types only. No se procesan los contratos de servicios.Service Contracts are not processed.

Solo debería especificar archivos de metadatos locales para esta opción.You should only specify local metadata files for this option.

Forma abreviada: /dconlyShort Form: /dconly
/excludeType: <type >/excludeType:<type> Especifica el nombre completo o calificado con el ensamblado de un tipo que se va a excluir de la validación.Specifies the fully-qualified or assembly-qualified name of a type to be excluded from validation.

Forma abreviada: /etShort Form: /et

Descarga de metadatosMetadata Download

Se puede utilizar Svcutil.exe para descargar los metadatos de servicios en ejecución y guardar los metadatos en archivos locales.Svcutil.exe can be used to download metadata from running services, and save the metadata to local files. Debe especificar la opción /t:metadata para descargar los metadatos.To download metadata, you must specify the /t:metadata option. De lo contrario, se genera el código de cliente.Otherwise, client code is generated. Para esquemas URL de HTTP y HTTPS, Svcutil.exe intenta recuperar metadatos mediante WS-Metadata Exchange y DISCO.For HTTP and HTTPS URL schemes, Svcutil.exe attempts to retrieve metadata using WS-Metadata Exchange and DISCO. Para todos los otros esquemas de URL, Svcutil.exe utiliza solo WS-Metadata Exchange.For all other URL schemes, Svcutil.exe only uses WS-Metadata Exchange.

Svcutil emite simultáneamente las solicitudes de los metadatos siguientes para recuperar los metadatos.Svcutil issues the following metadata requests simultaneously to retrieve metadata.

  • Solicitud MEX (WS-Transfer) a la dirección proporcionadaMEX (WS-Transfer) request to the supplied address

  • Solicitud MEX a la dirección proporcionada con /mex anexadoMEX request to the supplied address with /mex appended

  • Solicitud DISCO (utilizando DiscoveryClientProtocol de ASMX) a la dirección proporcionada.DISCO request (using the DiscoveryClientProtocol from ASMX) to the supplied address.

De forma predeterminada, Svcutil.exe utiliza los enlaces definidos en la clase MetadataExchangeBindings para realizar las solicitudes MEX.By default, Svcutil.exe uses the bindings defined in the MetadataExchangeBindings class to make MEX requests. Para configurar el enlace utilizado para WS-Metadata Exchange, debe definir un extremo del cliente en configuración que utiliza el contrato de IMetadataExchange.To configure the binding used for WS-Metadata Exchange, you must define a client endpoint in configuration that uses the IMetadataExchange contract. Esto se puede definir en el archivo de configuración de Svcutil.exe o en otro archivo de configuración especificado mediante la opción /svcutilConfig.This can be defined either in the configuration file of Svcutil.exe, or in another configuration file specified using the /svcutilConfig option.

svcutil.exe /t:metadata <url>* | <epr>

ArgumentoArgument DescripciónDescription
url La dirección URL a un extremo de servicio que proporciona metadatos o a un documento de metadatos hospedado en línea.The URL to a service endpoint that provides metadata or to a metadata document hosted online.
epr La ruta de acceso a un archivo XML que contiene un WS-Addressing EndpointReference para un extremo de servicio compatible con WS-Metadata Exchange.The path to an XML file that contains a WS-Addressing EndpointReference for a service endpoint that supports WS-Metadata Exchange.

Generación de tipo XmlSerializerXmlSerializer Type Generation

Los servicios y las aplicaciones cliente que utilizan tipos de datos que son serializables utilizando XmlSerializer generan y compilan el código de la serialización para esos tipos de datos en el tiempo de ejecución, lo que se puede traducir en un rendimiento de inicio lento.Services and client applications that use data types that are serializable using the XmlSerializer generate and compile serialization code for those data types at runtime, which can result in slow start-up performance.

Nota

El código de serialización generado previamente solo puede usarse en aplicaciones cliente y no en servicios.Pre-generated serialization code can only be used in client applications and not in services.

Svcutil.exe puede generar el código de serialización C# necesario a partir de los ensamblados compilados para la aplicación, mejorando así el rendimiento de inicio de esas aplicaciones.Svcutil.exe can generate the necessary C# serialization code from the compiled assemblies for the application, thus improving start-up performance for these applications. Para obtener más información, vea Cómo: mejorar el tiempo de inicio de las aplicaciones cliente WCF mediante XmlSerializer.For more information, see How to: Improve the Startup Time of WCF Client Applications using the XmlSerializer.

Nota

Svcutil.exe solo genera el código para los tipos utilizados por los contratos de servicio situados en los ensamblados de entrada.Svcutil.exe only generates code for types used by Service Contracts found in the input assemblies.

svcutil.exe /t:xmlSerializer <assemblyPath>*

ArgumentoArgument DescripciónDescription
assemblyPath Especifica la ruta de acceso a un ensamblado que contiene tipos de contrato de servicio.Specifies the path to an assembly that contains service contract types. Los tipos de serialización se generan para todos los tipos Xml Serializable en cada contrato.Serialization types are generated for all Xml Serializable types in each contract.
OpciónOption DescripciónDescription
/Reference: @no__t ruta de acceso de 0file >/reference:<file path> Agrega el ensamblado especificado al conjunto de ensamblados utilizados para resolver las referencias de tipo.Adds the specified assembly to the set of assemblies used for resolving type references.

Forma abreviada: /rShort Form: /r
/excludeType: <type >/excludeType:<type> Especifica el nombre completo o calificado con el ensamblado de un tipo que se va a excluir de la exportación o de la validación.Specifies the fully-qualified or assembly-qualified name of a type to be excluded from export or validation.

Forma abreviada: /etShort Form: /et
/out: <file >/out:<file> Especifica el nombre de archivo para el código generado.Specifies the filename for the generated code. Se omite esta opción cuando se pasan varios ensamblados a la herramienta como entrada.This option is ignored when multiple assemblies are passed as input to the tool.

Valor predeterminado: Se deriva del nombre de ensamblado.Default: Derived from the assembly name.

Forma abreviada: /oShort Form: /o
/UseSerializerForFaults/UseSerializerForFaults Especifica que XmlSerializer se debería utilizar para leer y escribir los errores, en lugar del DataContractSerializer predeterminado.Specifies that the XmlSerializer should be used for reading and writing faults, instead of the default DataContractSerializer.

EjemplosExamples

El comando siguiente genera el código de cliente a partir de un servicio en ejecución o los documentos de metadatos en línea.The following command generates client code from a running service or online metadata documents.

svcutil http://service/metadataEndpoint

El comando siguiente genera el código de cliente a partir de los documentos de metadatos locales.The following command generates client code from local metadata documents.

svcutil *.wsdl *.xsd /language:C#

El comando siguiente genera los tipos de contrato de datos en Visual Basic a partir de documentos de esquema locales.The following command generates data contract types in Visual Basic from local schema documents.

svcutil /dconly *.xsd /language:VB

El comando siguiente descarga los documentos de metadatos a partir de servicios en ejecución.The following command downloads metadata documents from running services.

svcutil /t:metadata http://service/metadataEndpoint

El comando siguiente genera los documentos de metadatos para contratos de servicios y tipos asociados en un ensamblado.The following command generates metadata documents for service contracts and associated types in an assembly.

svcutil myAssembly.dll

El comando siguiente genera documentos de metadatos para un servicio y todos los contratos de servicios asociados y tipos de datos en un ensamblado.The following command generates metadata documents for a service, and all associated service contracts and data types in an assembly.

svcutil myServiceHost.exe /serviceName:myServiceName

El comando siguiente genera documentos de metadatos para los tipos de datos en un ensamblado.The following command generates metadata documents for data types in an assembly.

svcutil myServiceHost.exe /dconly

El comando siguiente comprueba el hospedaje del servicio.The following command verifies service hosting.

svcutil /validate /serviceName:myServiceName myServiceHost.exe

El comando siguiente genera los tipos de serialización para los tipos XmlSerializer utilizados por cualquier contrato de servicios en el ensamblado.The following command generates serialization types for XmlSerializer types used by any service contracts in the assembly.

svcutil /t:xmlserializer myContractLibrary.exe

Cuota máxima de caracteres de tabla de nombresMaximum Nametable Character Count Quota

Al utilizar svcutil para generar metadatos para un servicio, es posible que obtenga el mensaje de error siguiente:When using svcutil to generate metadata for a service, you may get the following message:

Error: no se pueden obtener metadatos de http://localhost:8000/somesservice/mex se superó la cuota máxima de número de caracteres de la base de datos (16384) al leer los datos XML.Error: Cannot obtain Metadata from http://localhost:8000/somesservice/mex The maximum nametable character count quota (16384) has been exceeded while reading XML data. La tabla de nombres es una estructura de datos que se emplea para almacenar las cadenas encontradas durante el procesamiento XML. Los documentos XML largos con valores de atributo, nombres de atributo y nombres de elemento no repetidos pueden hacer que se sobrepase la cuota.The nametable is a data structure used to store strings encountered during XML processing - long XML documents with non-repeating element names, attribute names and attribute values may trigger this quota. Esta cuota puede aumentarse cambiando la propiedad MaxNameTableCharCount en el objeto XmlDictionaryReaderQuotas usado al crear el lector XML.This quota may be increased by changing the MaxNameTableCharCount property on the XmlDictionaryReaderQuotas object used when creating the XML reader.

Este error puede producirlo un servicio que devuelve un archivo WSDL de gran tamaño cuando se solicitan sus metadatos.This error can be caused by a service that returns a large WSDL file when you request its metadata. El problema se produce porque se supera la cuota de caracteres de la herramienta svcutil.exe.The problem is that the character quota for the svcutil.exe tool is exceeded. Este valor se establece para evitar los ataques por denegación de servicio (DOS).This value is set to help prevent denial of service (dos) attacks. Puede aumentar esta cuota especificando el archivo de configuración siguiente para svcutil.You can increase this quota by specifying the following config file for svcutil.

El archivo de configuración siguiente muestra cómo establecer las cuotas de lector para svcutil.The following config file shows how to set the reader quotas for svcutil

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.serviceModel>
        <bindings>
            <customBinding>
                <binding name="MyBinding">
                    <textMessageEncoding>
                        <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
                            maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
                    </textMessageEncoding>
                    <httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
                </binding>
            </customBinding>
        </bindings>
        <client>
            <endpoint binding="customBinding" bindingConfiguration="MyBinding"
                contract="IMetadataExchange"
                name="http" />
        </client>
    </system.serviceModel>
</configuration>

Cree un archivo denominado svcutil.exe.config y copie en él el código de ejemplo en XML.Create a new file called svcutil.exe.config and copy the XML example code into it. A continuación, sitúe el archivo en el mismo directorio que svcutil.exe.Then place the file in the same directory as svcutil.exe. La próxima vez que se ejecute svcutil.exe, usará la nueva configuración.The next time svcutil.exe is run it will pick up the new settings.

Cuestiones de seguridadSecurity Concerns

Debería utilizar la lista de control de acceso (ACL) adecuada para proteger la carpeta de instalación de Svcutil.exe, Svcutil.config y los archivos que /svcutilConfig señala.You should use the appropriate Access Control List (ACL) to protect Svcutil.exe's installation folder, Svcutil.config, and files being pointed to by /svcutilConfig. Esto puede evitar que se registren y se ejecuten extensiones malintencionadas.This can prevent malicious extensions from being registered and run.

Además, para minimizar la posibilidad de que la seguridad se vea comprometida, no debe agregar extensiones que no sean de confianza para que formen parte del sistema o utilizar proveedores de código que no sean de confianza con SvcUtil. exe.In addition, to minimize the chance that security be compromised, you should not add untrusted extensions to be part of the system or use untrusted code providers with Svcutil.exe.

Finalmente, no debería utilizar la herramienta en el nivel medio de su aplicación, ya que puede producir la denegación de servicio al proceso actual.Finally, you should not use the tool in the middle-tier of your application, as it may cause denial-of-service to the current process.

Vea tambiénSee also