Outil Service Model Metadata Tool (Svcutil.exe)ServiceModel Metadata Utility Tool (Svcutil.exe)

L’outil utilitaire de métadonnées ServiceModel est utilisé pour générer le code de modèle de service à partir des documents de métadonnées et des documents de métadonnées à partir du code de modèle de service.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

L’outil utilitaire de métadonnées ServiceModel se trouve à l’emplacement d’installation SDK Windows, en particulier %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.

FonctionnalitésFunctionalities

Le tableau suivant récapitule les différentes fonctionnalités fournies par cet outil, ainsi que la rubrique correspondante qui explique comment l’utiliser :The following table summarizes the various functionalities provided by this tool, and the corresponding topic that discusses how it is used:

TâcheTask RubriqueTopic
Génère le code à partir des services en cours d'exécution ou de documents de métadonnées statiques.Generates code from running services or static metadata documents. Génération d’un client WCF à partir de métadonnées de serviceGenerating a WCF Client from Service Metadata
Exporte des documents de métadonnées à partir de code compilé.Exports metadata documents from compiled code. Guide pratique pour utiliser Svcutil.exe pour exporter des métadonnées à partir de code de service compiléHow to: Use Svcutil.exe to Export Metadata from Compiled Service Code
Valide le code de service compilé.Validates compiled service code. Guide pratique pour utiliser Svcutil.exe pour valider le code de service compiléHow to: Use Svcutil.exe to Validate Compiled Service Code
Télécharge des documents de métadonnées à partir de services en cours d'exécution.Downloads metadata documents from running services. Guide pratique pour utiliser Svcutil.exe pour télécharger des documents de métadonnéesHow to: Use Svcutil.exe to Download Metadata Documents
Génère du code de sérialisation.Generates serialization code. Guide pratique pour améliorer le temps de démarrage des applications clientes WCF à l’aide de XmlSerializerHow to: Improve the Startup Time of WCF Client Applications using the XmlSerializer

Attention

Svcutil remplace les fichiers existants sur un disque si les noms fournis comme paramètres sont identiques.Svcutil overwrites existing files on a disk if the names supplied as parameters are identical. Il peut s’agir de fichiers de code, de configuration ou de fichiers de métadonnées.This can include code files, configuration, or metadata files. Pour éviter cela lors de la génération de code et de fichiers de configuration, utilisez le commutateur /mergeConfig.To avoid this when generating code and configuration files, use the /mergeConfig switch.

En outre, les commutateurs /r et /ct pour les types de référencement sont destinés à la génération de contrats de données.In addition, the /r and /ct switches for referencing types are for generating data contracts. Ces commutateurs ne fonctionnent pas lors de l'utilisation de XmlSerializer.These switches do not work when using XmlSerializer.

DélaiTimeout

L’outil a un délai d’expiration de cinq minutes lors de l’extraction des métadonnées.The tool has a five minute timeout when retrieving metadata. Ce délai d'attente s'applique uniquement à la récupération des métadonnées sur le réseau.This timeout only applies to retrieving metadata over the network. Il ne s'applique pas au traitement de ces métadonnées.It does not apply to any processing of that metadata.

Multi-ciblageMulti-targeting

L'outil ne prend pas en charge le multi-ciblage.The tool does not support multi-targeting. Si vous souhaitez générer un artefact .NET 4 à partir de Svcutil. exe, utilisez Svcutil. exe à partir du kit de développement logiciel (SDK) .net 4.If you want to generate a .NET 4 artifact from svcutil.exe, use the svcutil.exe from the .NET 4 SDK. Pour générer un artefact .NET 3.5, utilisez le fichier exécutable du Kit de développement logiciel (SDK) de .NET 3.5.To generate a .NET 3.5 artifact, use the executable from the .NET 3.5 SDK.

Accès aux documents WSDLAccessing WSDL Documents

Lorsque vous utilisez Svcutil pour accéder à un document WSDL qui contient une référence à un service d'émission de jeton de sécurité (STS), Svcutil effectue un appel WS-MetadataExchange call au 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. Cependant, le service peut exposer ses documents WSDL à l'aide de WS-MetadataExchange ou de HTTP GET.However, the service can expose its WSDL documents using either WS-MetadataExchange or HTTP GET. Par conséquent, si le STS a uniquement exposé le document WSDL à l’aide de HTTP, un client écrit en WinFX échoue.Therefore, if the STS has only exposed the WSDL document using HTTP GET, a client written in WinFX will fail. Pour les clients écrits en .NET Framework 3.5.NET Framework 3.5, Svcutil tente d’utiliser à la fois WS-MetadataExchange et HTTP pour obtenir le WSDL 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.

Utilisation de Svcutil.exeUsing SvcUtil.exe

Utilisations courantesCommon Usages

Le tableau suivant présente quelques options couramment utilisées pour cet outil :The following table shows some commonly used options for this tool:

OptionOption DescriptionDescription
/Répertoire : <directory >/directory:<directory> Répertoire à utiliser pour la création des fichiers.Directory to create files in.

Valeur par défaut : le répertoire actif.Default: The current directory.

Forme abrégée : /dShort form: /d
/help/help Affiche la syntaxe de commande et les options de l'outil.Displays the command syntax and options for the tool.

Forme abrégée : /?Short form: /?
/noLogo/noLogo Supprime le message de copyright et de bannière.Suppress the copyright and banner message.
En utilisant/svcutilConfig : <configFile >/svcutilConfig:<configFile> Spécifie un fichier de configuration personnalisé à utiliser en remplacement du fichier App.config.Specifies a custom configuration file to use instead of the App.config file. Peut être utilisé pour enregistrer des extensions system.serviceModel sans modifier le fichier de configuration de l’outil.This can be used to register system.serviceModel extensions without altering the tool's configuration file.
/target : @no__t-type 0output >/target:<output type> Spécifie la sortie à générer par l'outil.Specifies the output to be generated by the tool.

Les valeurs valides sont code, métadonnées ou xmlSerializer.Valid values are code, metadata or xmlSerializer.

Forme abrégée : /tShort form: /t

Génération de codeCode Generation

Svcutil.exe peut générer du code pour les contrats de service, les clients et les types de données à partir de documents de métadonnées.Svcutil.exe can generate code for service contracts, clients and data types from metadata documents. Ces documents de métadonnées peuvent se trouver sur un stockage durable, ou encore être récupérés en ligne.These metadata documents can be on a durable storage, or be retrieved online. La récupération en ligne suit le protocole WS-Metadata Exchange ou le protocole DISCO (pour plus d'informations, consultez la section consacrée au téléchargement de métadonnées).Online retrieval follows either the WS-Metadata Exchange protocol or the DISCO protocol (for details see the Metadata Download section).

Vous pouvez utiliser l’outil Svcutil. exe pour générer des contrats de service et de données basés sur un document WSDL prédéfini.You can use the SvcUtil.exe tool to generate service and data contracts based on a predefined WSDL document. Utilisez le commutateur /serviceContract et spécifiez une URL ou un emplacement de fichier dans lequel le document WSDL peut être téléchargé ou disponible.Use the /serviceContract switch and specify a URL or file location where the WSDL document can be downloaded or found. Cela génère le service et les contrats de données définis dans le document WSDL, qui peuvent ensuite être utilisés pour implémenter un service de réclamation.This generates the service and data contracts defined in the WSDL document that can then be used to implement a complaint service. Pour plus d’informations, consultez Comment : récupérer des métadonnées et implémenter un service conforme.For more information, see How to: Retrieve Metadata and Implement a Compliant Service.

Pour un service avec un point de terminaison BasicHttpContextBinding, Svcutil. exe génère un BasicHttpBinding avec l’attribut allowCookies défini sur true à la place.For a service with a BasicHttpContextBinding endpoint, Svcutil.exe generates a BasicHttpBinding with the allowCookies attribute set to true instead. Les cookies sont utilisés pour le contexte sur le serveur.The cookies are used for context on the server. Pour gérer le contexte sur le client lorsque le service utiliser des cookies, vous pouvez modifier manuellement la configuration pour utiliser une liaison de contexte.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.

Attention

Svcutil.exe génère le client sur la base du WSDL ou du fichier de stratégie reçu du service.Svcutil.exe generates the client based on the WSDL or policy file received from the service. Le nom d’utilisateur principal (UPN) est généré en concaténant le nom d’utilisateur, « @ » et un nom de domaine complet (FQDN).The user principal name (UPN) is generated by concatenating username, "@" and a fully-qualified domain name (FQDN). Toutefois, ce format n'est pas valide pour les utilisateurs Active Directory, et l'UPN généré par l'outil provoque une défaillance dans l'authentification Kerberos et l'affichage du message d'erreur suivant : La tentative d'ouverture de session a échoué.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". Pour remédier à cela, vous devez corriger manuellement le fichier client généré par cet outil.To resolve this problem, you should manually fix the client file generated by this tool.

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

ArgumentArgument DescriptionDescription
epr Chemin d'accès à un fichier XML qui contient une référence de point de terminaison WS-Addressing pour un service qui prend en charge WS-Metadata Exchange.The path to an XML file that contains a WS-Addressing EndpointReference for a service endpoint that supports WS-Metadata Exchange. Pour plus d'informations, consultez la section consacrée au téléchargement de métadonnées.For more information, see the Metadata Download section.
metadataDocumentPath Chemin d’accès à un document de métadonnées (WSDL ou xsd) qui contient le contrat à importer dans le code (. wsdl,. xsd,. WSPolicy ou. wsmex).The path to a metadata document (wsdl or xsd) that contains the contract to import into code (.wsdl, .xsd, .wspolicy, or .wsmex).

Svcutil effectue des imports et des opérations d'inclusion lorsque vous spécifiez une URL distante pour les métadonnées.Svcutil follows imports and includes when you specify a remote URL for metadata. Toutefois, si vous souhaitez traiter des fichiers de métadonnées sur le système de fichiers local, vous devez spécifier tous les fichiers dans cet argument.However, if you want to process metadata files on the local file system, you must specify all files in this argument. De cette façon, vous pouvez utiliser Svcutil dans un environnement de génération dans lequel vous ne pouvez pas avoir de dépendances de réseau.In this way, you can use Svcutil in a build environment where you cannot have network dependencies. Vous pouvez utiliser des caractères génériques (*. xsd, @no__t 1/-0. WSDL) pour cet argument.You can use wildcards (*.xsd, *.wsdl) for this argument.
url URL d'accès à un point de terminaison de service qui fournit les métadonnées ou à un document de métadonnées hébergé en ligne.The URL to a service endpoint that provides metadata or to a metadata document hosted online. Pour plus d'informations sur la façon dont ces documents sont récupérés, consultez la section consacrée au téléchargement de métadonnées.For more information on how these documents are retrieved, see the Metadata Download section.
OptionOption DescriptionDescription
/async/async Génère à la fois des signatures de méthode synchrones et asynchrones.Generates both synchronous and asynchronous method signatures.

Valeur par défaut : génération de signatures de méthode synchrones uniquement.Default: generate only synchronous method signatures.

Forme abrégée : /aShort Form: /a
/collectionType : <Type >/collectionType:<type> Spécifie le type de collection de listes pour un client WCF.Specifies the list collection type for a WCF client.

Valeur par défaut : le type de collection est System. Array.Default: collection type is System.Array.

Forme abrégée : /ctShort Form: /ct
/config : <configFile >/config:<configFile> Spécifie le nom de fichier du fichier de configuration généré.Specifies the filename for the generated configuration file.

Valeur par défaut : output.config.Default: output.config
/dataContractOnly/dataContractOnly Génère du code pour les types de contrat de données uniquement.Generates code for data contract types only. Aucun type de contrat de service n'est généré.Service Contract types are not generated.

Pour cette option, vous devez spécifier uniquement des fichiers de métadonnées locaux.You should only specify local metadata files for this option.

Forme abrégée : /dconlyShort Form: /dconly
/enableDataBinding/enableDataBinding Implémente l'interface INotifyPropertyChanged sur tous les types de contrat de données pour activer la liaison de données.Implements the INotifyPropertyChanged interface on all Data Contract types to enable data binding.

Forme abrégée : /edbShort Form: /edb
/excludeType : <Type >/excludeType:<type> Spécifie un nom de type qualifié complet ou qualifié d'assembly à exclure des types de contrat référencés.Specifies a fully-qualified or assembly-qualified type name to be excluded from referenced contract types.

Lors de l'utilisation de ce commutateur avec /r à partir de DLL séparées, le nom complet de la classe XSD est référencé.When using this switch together with /r from separate DLLs, the full name of the XSD class is referenced.

Forme abrégée : /etShort Form: /et
/importXmlTypes/importXmlTypes Configure le sérialiseur de contrat de données de façon à importer des types autres que le type de contrat de données en tant que types IXmlSerializable.Configures the Data Contract serializer to import non-Data Contract types as IXmlSerializable types.
/internal/internal Génère des classes marquées comme internes.Generates classes that are marked as internal. Valeur par défaut : génération de classes publiques uniquement.Default: generate public classes only.

Forme abrégée : /iShort Form: /i
/Language : <language >/language:<language> Spécifie le langage de programmation à utiliser pour la génération de code.Specifies the programming language to use for code generation. Vous devez fournir soit un nom de langue enregistré dans le fichier machine. config, soit le nom qualifié complet d’une classe qui hérite 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.

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

Valeur par défaut : csharpDefault: csharp

Forme abrégée : /lShort form: /l
/mergeConfig/mergeConfig Fusionne la configuration générée dans un fichier existant au lieu de remplacer le fichier existant.Merges the generated configuration into an existing file, instead of overwriting the existing file.
/messageContract/messageContract Génère des types de contrat de message.Generates Message Contract types.

Forme abrégée : /mcShort Form: /mc
/Namespace : <string, chaîne >/namespace:<string,string> Spécifie un mappage d'un espace de noms WSDL ou XML Schema targetNamespace vers un espace de noms CLR.Specifies a mapping from a WSDL or XML Schema targetNamespace to a CLR namespace. L’utilisation de' * 'pour le targetNamespace mappe tous les targetNamespaces sans mappage explicite à cet espace de noms CLR.Using '*' for the targetNamespace maps all targetNamespaces without an explicit mapping to that CLR namespace.

Pour vérifier que le nom de contrat du message n'entre pas en collision avec le nom d'opération, vous devez soit qualifier la référence de type avec ::, soit vous assurer que les noms sont uniques.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.

Valeur par défaut : dérivée de l'espace de noms cible du document de schéma pour les contrats de données.Default: Derived from the target namespace of the schema document for Data Contracts. L'espace de noms par défaut est utilisé pour tous les autres types générés.The default namespace is used for all other generated types.

Forme abrégée : /n Remarque : lors de la génération de types à utiliser avec XmlSerializer, un seul mappage d’espace de noms est pris en charge.Short Form: /n Note: When generating types to use with XmlSerializer, only a single namespace mapping is supported. Tous les types générés seront soit dans l’espace de noms par défaut, soit dans l’espace de noms spécifié par' * '.All generated types will either be in the default namespace or the namespace specified by '*'.
/noConfig/noConfig Ne génère pas de fichiers de configuration.Do not generate configuration files.
/noStdLib/noStdLib Ne référence pas les bibliothèques standard.Do not reference standard libraries.

Valeur par défaut: Mscorlib.dll et System.servicemodel.dll sont référencés.Default: Mscorlib.dll and System.servicemodel.dll are referenced.
/out : <file >/out:<file> Spécifie le nom de fichier du code généré.Specifies the file name for the generated code.

Valeur par défaut: dérivée du nom de définition WSDL, du nom de service WSDL ou de l'espace de noms cible de l'un des schémas.Default: Derived from the WSDL definition name, WSDL service name or target namespace of one of the schemas.

Forme abrégée : /oShort form: /o
/Reference : @no__t-chemin 0file >/reference:<file path> Référence les types contenus dans l'assembly spécifié.References types in the specified assembly. Lorsque vous générez des clients, utilisez cette option pour spécifier des assemblys qui peuvent contenir des types représentant les métadonnées importées.When generating clients, use this option to specify assemblies that might contain types that represent the metadata being imported.

Vous ne pouvez pas spécifier de contrats de message et de types XmlSerializer à l'aide de ce commutateur.You cannot specify message contracts and XmlSerializer types using this switch.

Si DateTimeOffset est référencé, ce type est utilisé au lieu de générer un nouveau type.If DateTimeOffset referenced, this type is used instead of generating a new type. Si l'application est écrite à l'aide de .NET Framework 3.5.NET Framework 3.5, SvcUtil.exe référence automatiquement DateTimeOffset.If the application is written using .NET Framework 3.5.NET Framework 3.5, SvcUtil.exe references DateTimeOffset automatically.

Forme abrégée : /rShort Form: /r
/serializable/serializable Génère des classes marquées avec l'attribut Serializable.Generates classes marked with the Serializable Attribute.

Forme abrégée : /sShort Form: /s
/serviceContract/serviceContract Générez le code pour les contrats de service uniquement.Generate code for service contracts only. La classe de client et la configuration ne sont pas généréesClient class and configuration will not be generated

Forme abrégée : /scShort Form: /sc
/serializer:Auto/serializer:Auto Sélectionnez automatiquement le sérialiseur.Automatically select the serializer. Cela tente d’utiliser le sérialiseur de contrat de données et utilise le XmlSerializer en cas d’échec.This tries to use the Data Contract serializer and uses the XmlSerializer if that fails.

Forme abrégée : /serShort Form: /ser
/serializer:DataContractSerializer/serializer:DataContractSerializer Génère des types de données qui utilisent le sérialiseur de contrat de données pour la sérialisation et la désérialisation.Generates data types that use the Data Contract Serializer for serialization and deserialization.

Forme abrégée : /ser:DataContractSerializerShort Form: /ser:DataContractSerializer
/serializer:XmlSerializer/serializer:XmlSerializer Génère des types de données qui utilisent le XmlSerializer pour la sérialisation et la désérialisation.Generates data types that use the XmlSerializer for serialization and deserialization.

Forme abrégée : /ser:XmlSerializerShort Form: /ser:XmlSerializer
/targetClientVersion/targetClientVersion Spécifiez la version de .NET Framework ciblée par l’application.Specify which version of .NET Framework the application is targeting. Les valeurs valides sont Version30 et Version35.Valid values are Version30 and Version35. La valeur par défaut est Version30.The default value is Version30.

Forme abrégée : /tcvShort Form: /tcv

Version30 : utilisez /tcv:Version30 si vous générez du code pour les clients qui utilisent WinFX.Version30: Use /tcv:Version30 if you are generating code for clients that use WinFX.

Version35 : Utilisez /tcv:Version35 si vous générez du code pour les clients qui utilisent .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. Si vous utilisez /tcv:Version35 avec le commutateur /async, des méthodes asynchrones basées sur des délégués de rappel et sur des événements sont générées.When using /tcv:Version35 with the /async switch, both event-based and callback/delegate-based asynchronous methods are generated. De plus, la prise en charge des DataSets activés par LINQ et DateTimeOffset est activée.In addition, support for LINQ-enabled DataSets and DateTimeOffset is enabled.
/wrapped/wrapped Contrôle l'usage de la casse appropriée pour les documents de type littéral par le biais des paramètres d'encapsulage.Controls whether special-casing is used for document-literal styled documents with wrapped parameters. Utilisez le commutateur /Wrapped avec l’outil Service Model Metadata Utility Tool (Svcutil. exe) pour spécifier une casse normale.Use the /wrapped switch with the Service Model Metadata Utility Tool (Svcutil.exe) tool to specify normal casing.

Notes

Lorsque la liaison de service est l’une des liaisons fournies par le système (voir liaisons fournies par le système) et que la propriété ProtectionLevel est définie sur None ou Sign, Svcutil génère un fichier de configuration à l’aide de la <customBinding > au lieu de l’élément fourni par le système attendu.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. Par exemple, si le service utilise l'élément <wsHttpBinding> avec le ProtectionLevel défini à Sign, la configuration générée a <customBinding> dans la section bindings au lieu 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>. Pour plus d’informations sur le niveau de protection, consultez Présentation du niveau de protection.For more information about the protection level, see Understanding Protection Level.

Exportation de métadonnéesMetadata Export

Svcutil.exe peut exporter des métadonnées pour des services, des contrats et des types de données contenus dans des assemblys compilés.Svcutil.exe can export metadata for services, contracts and data types in compiled assemblies. Pour exporter des métadonnées pour un service, vous devez utiliser l'option /serviceName afin de spécifier le service à exporter.To export metadata for a service, you must use the /serviceName option to specify the service you would like to export. Pour exporter tous les types de contrat de données dans un assembly, vous devez utiliser l'option /dataContractOnly.To export all data contract types within an assembly, you should use the /dataContractOnly option. Par défaut, les métadonnées sont exportées pour tous les contrats de service dans les assemblys d'entrée.By default, metadata is exported for all service contracts in the input assemblies.

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

ArgumentArgument DescriptionDescription
assemblyPath Spécifie le chemin d’accès à un assembly qui contient des services, des contrats ou des types de contrat de données à exporter.Specifies the path to an assembly that contains services, contracts or data contract types to be exported. Des caractères génériques de ligne de la commande standard peuvent être utilisés pour fournir plusieurs fichiers en tant qu'entrée.Standard command line wildcards can be used to provide multiple files as input.
OptionOption DescriptionDescription
/serviceName : <serviceConfigName >/serviceName:<serviceConfigName> Spécifie le nom de configuration d'un service à exporter.Specifies the configuration name of a service to be exported. Si cette option est utilisée, un assembly exécutable avec un fichier de configuration associé doit être passé en tant qu'entrée.If this option is used, an executable assembly with an associated configuration file must be passed as input. Svcutil.exe recherche tous les fichiers de configuration associés la configuration du service.Svcutil.exe searches all associated configuration files for the service configuration. Si les fichiers de configuration contiennent des types d’extension, les assemblys qui contiennent ces types doivent être dans le GAC ou être explicitement fournis à l’aide de l’option /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-chemin 0file >/reference:<file path> Ajoute l'assembly spécifié au jeu d'assemblys utilisé pour résoudre des références de type.Adds the specified assembly to the set of assemblies used for resolving type references. Si vous exportez ou validez un service qui utilise des extensions tierces (Comportements, Liaisons et BindingElements) enregistrées dans la configuration, utilisez cette option pour localiser des assemblys d’extension qui ne figurent pas dans le 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.

Forme abrégée : /rShort Form: /r
/dataContractOnly/dataContractOnly Fonctionne uniquement sur les types de contrat de données.Operates on data contract types only. Les contrats de service ne sont pas traités.Service Contracts are not processed.

Pour cette option, vous devez spécifier uniquement des fichiers de métadonnées locaux.You should only specify local metadata files for this option.

Forme abrégée : /dconlyShort Form: /dconly
/excludeType : <Type >/excludeType:<type> Spécifie le nom qualifié complet ou qualifié d'assembly d'un type à exclure de l'exportation.Specifies the fully-qualified or assembly-qualified name of a type to be excluded from export. Cette option peut être utilisée lors de l'exportation des métadonnées d'un service (ou d'un ensemble de contrats de services) afin d'exclure certains types de l'opération d'exportation.This option can be used when exporting metadata for a service, or a set of service contracts to exclude types from being exported. Cette option ne peut pas être utilisée avec l'option /dconly.This option cannot be used together with the /dconly option.

Lorsqu'un assembly contient plusieurs services et que chacun d'entre eux utilise des classes séparées tout en portant le même nom XSD, vous devez spécifier le nom du service au lieu du nom de la classe XSD pour ce commutateur.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.

Les types XSD ou les types de contrat de données ne sont pas pris en charge.XSD or data contract types are not supported.

Forme abrégée : /etShort Form: /et

Validation de serviceService Validation

La validation peut être utilisée pour détecter des erreurs dans les implémentations de service sans héberger le service.Validation can be used to detect errors in service implementations without hosting the service. Vous devez utiliser l'option /serviceName pour indiquer le service à valider.You must use the /serviceName option to indicate the service you want to validate.

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

ArgumentArgument DescriptionDescription
assemblyPath Spécifie le chemin d’accès à un assembly qui contient des types de service à valider.Specifies the path to an assembly that contains service types to be validated. L'assembly doit posséder un fichier de configuration associé pour pouvoir fournir la configuration du service.The assembly must have an associated configuration file to provide service configuration. Vous pouvez utiliser des caractères génériques de ligne de commande standard pour fournir plusieurs assemblys.Standard command-line wildcards can be used to provide multiple assemblies.
OptionOption DescriptionDescription
/validate/validate Valide une implémentation de service spécifiée par l'option /serviceName.Validates a service implementation specified by the /serviceName option. Si cette option est utilisée, un assembly exécutable avec un fichier de configuration associé doit être passé en tant qu'entrée.If this option is used, an executable assembly with an associated configuration file must be passed as input.

Forme abrégée : /vShort Form: /v
/serviceName : <serviceConfigName >/serviceName:<serviceConfigName> Spécifie le nom de configuration d'un service à valider.Specifies the configuration name of a service to be validated. Svcutil.exe recherche tous les fichiers de configuration associés de tous les assemblys d'entrée pour la configuration du service.Svcutil.exe searches all associated configuration files of all input assemblies for the service configuration. Si les fichiers de configuration contiennent des types d'extension, les assemblys qui contiennent ces types doivent être dans le GAC ou être explicitement fournis à l'aide de l'option /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-chemin 0file >/reference:<file path> Ajoute l'assembly spécifié au jeu d'assemblys utilisé pour résoudre des références de type.Adds the specified assembly to the set of assemblies used for resolving type references. Si vous exportez ou validez un service qui utilise des extensions tierces (Comportements, Liaisons et BindingElements) enregistrées dans la configuration, utilisez cette option pour localiser des assemblys d’extension qui ne figurent pas dans le 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.

Forme abrégée : /rShort Form: /r
/dataContractOnly/dataContractOnly Fonctionne uniquement sur les types de contrat de données.Operates on data contract types only. Les contrats de service ne sont pas traités.Service Contracts are not processed.

Pour cette option, vous devez spécifier uniquement des fichiers de métadonnées locaux.You should only specify local metadata files for this option.

Forme abrégée : /dconlyShort Form: /dconly
/excludeType : <Type >/excludeType:<type> Spécifie le nom qualifié complet ou qualifié d’assembly d’un type à exclure de la validation.Specifies the fully-qualified or assembly-qualified name of a type to be excluded from validation.

Forme abrégée : /etShort Form: /et

Téléchargement de métadonnéesMetadata Download

Svcutil.exe permet de télécharger des métadonnées à partir de services en cours d'exécution et de les enregistrer dans des fichiers locaux.Svcutil.exe can be used to download metadata from running services, and save the metadata to local files. Pour pouvoir télécharger des métadonnées, vous devez spécifier l'option /t:metadata.To download metadata, you must specify the /t:metadata option. Sinon, un code client est généré.Otherwise, client code is generated. Pour les schémas d'URL HTTP et HTTPS, Svcutil.exe essaie de récupérer les métadonnées à l'aide de WS-Metadata Exchange et DISCO.For HTTP and HTTPS URL schemes, Svcutil.exe attempts to retrieve metadata using WS-Metadata Exchange and DISCO. Pour tous les autres schémas d'URL, Svcutil.exe utilise uniquement WS-MetadataExchange.For all other URL schemes, Svcutil.exe only uses WS-Metadata Exchange.

Svcutil publie les requêtes de métadonnées suivantes tout en effectuant simultanément une récupération de métadonnées.Svcutil issues the following metadata requests simultaneously to retrieve metadata.

  • Requête MEX (WS-Transfer) à l'adresse fournieMEX (WS-Transfer) request to the supplied address

  • Requête MEX à l'adresse fournie avec /mex ajoutéMEX request to the supplied address with /mex appended

  • Requête DISCO (à l'aide du DiscoveryClientProtocol d'ASMX) à l'adresse fournie.DISCO request (using the DiscoveryClientProtocol from ASMX) to the supplied address.

Par défaut, Svcutil.exe utilise les liaisons définies dans la classe MetadataExchangeBindings pour effectuer des requêtes MEX.By default, Svcutil.exe uses the bindings defined in the MetadataExchangeBindings class to make MEX requests. Pour configurer la liaison utilisée pour WS-Metadata Exchange, vous devez définir un point de terminaison client dans la configuration qui utilise le contrat IMetadataExchange.To configure the binding used for WS-Metadata Exchange, you must define a client endpoint in configuration that uses the IMetadataExchange contract. Cela peut être défini soit dans le fichier de configuration de Svcutil.exe, soit dans un autre fichier de configuration spécifié à l'aide de l'option /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>

ArgumentArgument DescriptionDescription
url URL d'accès à un point de terminaison de service qui fournit les métadonnées ou à un document de métadonnées hébergé en ligne.The URL to a service endpoint that provides metadata or to a metadata document hosted online.
epr Chemin d'accès à un fichier XML qui contient une référence de point de terminaison WS-Addressing pour un service qui prend en charge WS-Metadata Exchange.The path to an XML file that contains a WS-Addressing EndpointReference for a service endpoint that supports WS-Metadata Exchange.

Génération de type XmlSerializerXmlSerializer Type Generation

Les applications clientes et de services qui utilisent des types de données sérialisables à l'aide de XmlSerializer génèrent et compilent le code de sérialisation de ces types de données lors de l'exécution, ce qui peut provoquer des performances de démarrage lentes.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.

Notes

Le code de sérialisation prégénéré est réservé aux applications clientes, pas aux services.Pre-generated serialization code can only be used in client applications and not in services.

Svcutil.exe peut améliorer les performances de démarrage de ces applications en générant le code de sérialisation C# nécessaire à partir des assemblys compilés pour l'application.Svcutil.exe can generate the necessary C# serialization code from the compiled assemblies for the application, thus improving start-up performance for these applications. Pour plus d’informations, consultez Comment : améliorer le temps de démarrage des applications clientes WCF à l’aide de XmlSerializer.For more information, see How to: Improve the Startup Time of WCF Client Applications using the XmlSerializer.

Notes

Svcutil.exe génère uniquement le code des types utilisés par les contrats de service figurant dans les assemblys d'entrée.Svcutil.exe only generates code for types used by Service Contracts found in the input assemblies.

svcutil.exe /t:xmlSerializer <assemblyPath>*

ArgumentArgument DescriptionDescription
assemblyPath Spécifie le chemin d’accès à un assembly qui contient des types de contrat de service.Specifies the path to an assembly that contains service contract types. Des types de sérialisation sont générés pour tous les types Xml sérialisables de chaque contrat.Serialization types are generated for all Xml Serializable types in each contract.
OptionOption DescriptionDescription
/Reference : @no__t-chemin 0file >/reference:<file path> Ajoute l'assembly spécifié au jeu d'assemblys utilisé pour résoudre des références de type.Adds the specified assembly to the set of assemblies used for resolving type references.

Forme abrégée : /rShort Form: /r
/excludeType : <Type >/excludeType:<type> Spécifie le nom qualifié complet ou qualifié d’assembly d’un type à exclure de l’exportation ou de la validation.Specifies the fully-qualified or assembly-qualified name of a type to be excluded from export or validation.

Forme abrégée : /etShort Form: /et
/out : <file >/out:<file> Spécifie le nom de fichier du code généré.Specifies the filename for the generated code. Cette option est ignorée lorsque plusieurs assemblys sont passés à l'outil en tant qu'entrée.This option is ignored when multiple assemblies are passed as input to the tool.

Valeur par défaut : dérivée du nom de l'assembly.Default: Derived from the assembly name.

Forme abrégée : /oShort Form: /o
/UseSerializerForFaults/UseSerializerForFaults Spécifie que XmlSerializer doit être utilisé pour lire et écrire les erreurs, au lieu du DataContractSerializer par défaut.Specifies that the XmlSerializer should be used for reading and writing faults, instead of the default DataContractSerializer.

ExemplesExamples

La commande suivante génère un code client à partir d'un service en cours d'exécution ou de documents de métadonnées en ligne.The following command generates client code from a running service or online metadata documents.

svcutil http://service/metadataEndpoint

La commande suivante génère un code client à partir de documents de métadonnées locaux.The following command generates client code from local metadata documents.

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

La commande suivante génère des types de contrat de données en Visual Basic à partir de documents de schémas locaux.The following command generates data contract types in Visual Basic from local schema documents.

svcutil /dconly *.xsd /language:VB

La commande suivante télécharge des documents de métadonnées à partir de services en cours d'exécution.The following command downloads metadata documents from running services.

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

La commande suivante génère des documents de métadonnées pour les contrats de service et les types associés d'un assembly.The following command generates metadata documents for service contracts and associated types in an assembly.

svcutil myAssembly.dll

La commande suivante génère des documents de métadonnées pour un service, ainsi que tous les contrats de service et types de données associés au sein d'un assembly.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

La commande suivante génère des documents de métadonnées pour les types de données présents dans un assembly.The following command generates metadata documents for data types in an assembly.

svcutil myServiceHost.exe /dconly

La commande suivante vérifie l'hébergement de services.The following command verifies service hosting.

svcutil /validate /serviceName:myServiceName myServiceHost.exe

La commande suivante génère des types de sérialisation pour les types XmlSerializer utilisés par les contrats de service de l'assembly.The following command generates serialization types for XmlSerializer types used by any service contracts in the assembly.

svcutil /t:xmlserializer myContractLibrary.exe

Quota maximal pour le nombre de caractères nametableMaximum Nametable Character Count Quota

Lors de l'utilisation de svcutil pour générer des métadonnées pour un service, vous pouvez recevoir le message suivant :When using svcutil to generate metadata for a service, you may get the following message:

Erreur : impossible d’obtenir les métadonnées à partir de http://localhost:8000/somesservice/mex le quota maximal du nombre de caractères NameTable (16384) a été dépassé lors de la lecture des données 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 structure de données nametable est utilisée pour stocker les chaînes rencontrées lors du traitement XML ; des documents XML longs comportant des noms d'éléments non répétés, des noms d'attributs et des valeurs d'attributs peuvent déclencher ce quota.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. Ce quota peut être augmenté en modifiant la propriété MaxNameTableCharCount sur l’objet XmlDictionaryReaderQuotas utilisé pendant la création du lecteur XML.This quota may be increased by changing the MaxNameTableCharCount property on the XmlDictionaryReaderQuotas object used when creating the XML reader.

Cette erreur peut être causée par un service qui retourne un fichier WSDL volumineux lorsque vous demandez ses métadonnées.This error can be caused by a service that returns a large WSDL file when you request its metadata. Le problème est lié à un dépassement du quota de caractères pour l'outil svcutil.exe.The problem is that the character quota for the svcutil.exe tool is exceeded. Cette valeur est définie pour empêcher les attaques par déni de service (DOS).This value is set to help prevent denial of service (dos) attacks. Vous pouvez augmenter ce quota en spécifiant le fichier de configuration suivant pour svcutil.You can increase this quota by specifying the following config file for svcutil.

Le fichier de configuration suivant montre comment définir les quotas du lecteur pour 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>

Créez un fichier appelé svcutil.exe.config et copiez l'exemple de code XML dans ce fichier.Create a new file called svcutil.exe.config and copy the XML example code into it. Puis, placez le fichier dans le même répertoire que svcutil.exe.Then place the file in the same directory as svcutil.exe. Lors de la prochaine exécution de svcutil.exe, les nouveaux paramètres seront pris en compte.The next time svcutil.exe is run it will pick up the new settings.

Problèmes de sécuritéSecurity Concerns

Vous devez utiliser la liste de contrôle d'accès appropriée pour protéger le dossier d'installation de Svcutil.exe, Svcutil.config, ainsi que les fichiers vers lesquels pointe /svcutilConfig.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. Cela peut éviter l'enregistrement et l'exécution d'extensions malveillantes.This can prevent malicious extensions from being registered and run.

En outre, pour réduire le risque que la sécurité soit compromise, vous ne devez pas ajouter d’extensions non fiables pour faire partie du système ou utiliser des fournisseurs de code non fiables avec 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.

Enfin, vous ne devez pas utiliser l'outil dans la couche intermédiaire de votre application, car cela pourrait provoquer un déni de service pour le processus en cours.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.

Voir aussiSee also