Strumento ServiceModel Metadata Utility Tool (Svcutil.exe)ServiceModel Metadata Utility Tool (Svcutil.exe)

Lo strumento ServiceModel Metadata Utility Tool viene utilizzato per generare il codice del modello di servizi da documenti di metadati e documenti di metadati dal codice di modello di servizi.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

Lo strumento ServiceModel Metadata Utility Tool si trova nel percorso di installazione Windows SDK, specificamente, in C:\Program Files\Microsoft SDKs\Windows\v6 .0 \BinThe ServiceModel Metadata Utility Tool can be found at the Windows SDK installation location, specifically, C:\Program Files\Microsoft SDKs\Windows\v6.0\Bin

FunzionalitàFunctionalities

Nella tabella seguente sono riepilogate le varie funzionalità fornite da questo strumento e l'argomento corrispondente che ne descrive le modalità di utilizzo.The following table summarizes the various functionalities provided by this tool and the corresponding topic that discusses how it is used.

AttivitàTask ArgomentoTopic
Consente di generare codice dai servizi in esecuzione o dai documenti di metadati statici.Generates code from running services or static metadata documents. Generazione di un client WCF dai metadati del servizioGenerating a WCF Client from Service Metadata
Consente di esportare documenti di metadati da codice compilato.Exports metadata documents from compiled code. Procedura: Usare Svcutil.exe per esportare metadati dal codice del servizio compilatoHow to: Use Svcutil.exe to Export Metadata from Compiled Service Code
Consente di convalidare codice di servizio compilato.Validates compiled service code. Procedura: Usare Svcutil.exe per convalidare il codice del servizio compilatoHow to: Use Svcutil.exe to Validate Compiled Service Code
Consente di scaricare documenti di metadati dai servizi in esecuzione.Downloads metadata documents from running services. Procedura: Usare Svcutil.exe per scaricare documenti di metadatiHow to: Use Svcutil.exe to Download Metadata Documents
Consente di generare codice di serializzazione.Generates serialization code. Procedura: Migliorare il tempo di avvio di applicazioni client WCF usando XmlSerializerHow to: Improve the Startup Time of WCF Client Applications using the XmlSerializer

Attenzione

Lo strumento Svcutil sovrascriverà i file esistenti su un disco se i nomi forniti come parametri sono identici.Svcutil will overwrite existing files on a disk if the names supplied as parameters are identical. Tali risorse possono includere file di codice, di configurazione o di metadati.This can include code files, configuration or metadata files. Per evitare questo problema durante la generazione di file di codice e di configurazione, utilizzare il commutatore /mergeConfig.To avoid this when generating code and configuration flies, use the /mergeConfig switch.

Inoltre, il /r e /ct sono commutatori per tipi di riferimento per generare contratti dati.In addition, the /r and /ct switches for referencing types are for generating data contracts. Questi commutatori non funzionano in caso di utilizzo di XmlSerializer.These switches do not work when using XmlSerializer.

TimeoutTimeout

Lo strumento ha un timeout di 5 minuti nel recupero di metadati.The tool has a 5 minute timeout when retrieving metadata. Questo timeout si applica solo al recupero di metadati sulla rete.This timeout only applies to retrieving metadata over the network. Non si applica a qualsiasi elaborazione dei metadati.It does not apply to any processing of that metadata.

MultitargetingMulti-targetting

Lo strumento non supporta il multitargeting.The tool does not support multi-targeting. Se si desidera generare un artefatto .NET 4 da svcutil.exe, è necessario utilizzare il file svcutil.exe presente nell'SDK di .NET 4.If you want to generate a .NET 4 artifact from svcutil.exe, you have to use the svcutil.exe from the .NET 4 SDK. Per generare un artefatto .NET 3.5, utilizzare l'eseguibile nell'SDK di .NET 3.5.To generate a .NET 3.5 artifact, use the executable from the .NET 3.5 SDK.

Accesso ai documenti WSDLAccessing WSDL Documents

Quando si utilizza Svcutil per accedere a un documento WSDL che presenti un riferimento al servizio token di sicurezza (STS), Svcutil effettua una chiamata di WS-MetadataExchange a 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. Tuttavia, il servizio può esporre il proprio documento WSDL utilizzando sia WS-MetadataExchange, sia HTTP GET.However, the service can expose its WSDL documents using either WS-MetadataExchange or HTTP GET. Pertanto, se STS ha solamente esposto il documento WSDL utilizzando HTTP GET, un client scritto in WinFXWinFX avrà esito negativo.Therefore, if the STS has only exposed the WSDL document using HTTP GET, a client written in WinFXWinFX will fail. Per i client scritti in .NET Framework 3.5.NET Framework 3.5, Svcutil tenterà di utilizzare sia WS-MetadataExchange che HTTP GET per ottenere il documento WSDL di STS.For clients written in .NET Framework 3.5.NET Framework 3.5, Svcutil will attempt to use both WS-MetadataExchange and HTTP GET to obtain the STS WSDL.

Utilizzo di SvcUtil.exeUsing SvcUtil.exe

Utilizzi comuniCommon Usages

Nella tabella seguente vengono illustrate alcune opzioni comunemente usate per questo strumento.The following table shows some commonly used options for this tool.

OpzioneOption DescrizioneDescription
/ directory:<directory >/directory:<directory> Directory nella quale creare file.Directory to create files in.

Impostazione predefinita: directory corrente.Default: The current directory.

Forma abbreviata: /dShort form: /d
/help/help Visualizza la sintassi e le opzioni dei comandi dello strumento.Displays the command syntax and options for the tool.

Forma abbreviata: /?Short form: /?
/noLogo/noLogo Eliminare le informazioni di copyright e il messaggio di avvio.Suppress the copyright and banner message.
/svcutilConfig:<configFile>/svcutilConfig:<configFile> Consente di specificare un file di configurazione personalizzato da utilizzare in sostituzione del file App.config.Specifies a custom configuration file to use instead of the App.config file. Questo file può essere utilizzato per registrare estensioni system.serviceModel senza alterare il file di configurazione dello strumento.This can be used to register system.serviceModel extensions without altering the tool's configuration file.
/target:<tipo di output >/target:<output type> Consente di specificare l’output che verrà generato dallo strumento.Specifies the output to be generated by the tool.

I valori validi sono codice, metadati o xmlSerializer.Valid values are code, metadata or xmlSerializer.

Forma abbreviata: /tShort form: /t

Generazione codiceCode Generation

Lo strumento Svcutil.exe è in grado di generare codice per contratti di servizio, client e tipi di dati dai documenti di metadati.Svcutil.exe can generate code for service contracts, clients and data types from metadata documents. Questi documenti di metadati possono essere salvati in modo permanente o recuperati online.These metadata documents can be on a durable storage, or be retrieved online. Il recupero online segue il protocollo WS-Metadata Exchange o il protocollo DISCO (per i dettagli vedere la sezione Download dei metadati).Online retrieval follows either the WS-Metadata Exchange protocol or the DISCO protocol (for details see the Metadata Download section).

È possibile utilizzare lo strumento SvcUtil.exe per generare i contratti di servizio e dati in base a un documento WSDL predefinito.You can use the SvcUtil.exe tool to generate service and data contracts based on a predefined WSDL document. Utilizzare l'opzione /serviceContract e specificare un URL o un percorso di file in cui il documento WSDL possa essere scaricato o trovato.Use the /serviceContract switch and specify a URL or file location where the WSDL document can be downloaded or found. In questo modo vengono generati i contratti di servizio e dati definiti nel documento WSDL che può quindi essere utilizzato per implementare un servizio conforme.This will generate the service and data contracts defined in the WSDL document that can then be used to implement a complaint service . Per altre informazioni, vedere procedura: recuperare metadati e implementare un servizio conforme.For more information, see How to: Retrieve Metadata and Implement a Compliant Service.

Per un servizio con un endpoint BasicHttpContextbinding, Svcutil.exe genera un BasicHttpBinding con l'attributo allowCookies impostato su true.For a service with a BasicHttpContextbinding endpoint, Svcutil.exe generates a BasicHttpBinding with the allowCookies attribute set to true instead. I cookie vengono utilizzati come contesto sul server.The cookies are used for context on the server. Se si desidera gestire il contesto sul client quando il servizio utilizza cookie, è possibile modificare la configurazione per utilizzare un elemento di associazione del contesto.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.

Attenzione

Lo strumento Svcutil.exe consente di generare il client in base al WSDL o al file dei criteri ricevuto dal servizio.Svcutil.exe generates the client based on the WSDL or policy file received from the service. Il nome dell’entità utente (UPN) è generato concatenando nome utente, "@" e un nome di dominio completo (FQDN).</span><span class="sxs-lookup">The user principal name (UPN) is generated by concatenating username, "@" and a fully-qualified domain name (FQDN).</span></span> <span data-ttu-id="83ed9-172">Per utenti registrati su Active Directory, questo formato non è tuttavia valido e l’UPN generato dallo strumento provoca un errore di autenticazione Kerberos con il messaggio di errore che “Tentativo di accesso non riuscito”.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". Per risolvere questo problema è necessario correggere manualmente il file client generato da questo strumento.To resolve this problem, you should manually fix the client file generated by this tool.

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

ArgomentoArgument DescrizioneDescription
epr Percorso di un file XML contenente un EndpointReference WS-Addressing per un endpoint di servizio che supporta WS-MetadataExchange.The path to an XML file that contains a WS-Addressing EndpointReference for a service endpoint that supports WS-Metadata Exchange. Per ulteriori informazioni, vedere la sezione Download dei metadati.For more information, see the Metadata Download section.
metadataDocumentPath Percorso per un documento di metadati (wsdl o xsd) contenente il contratto da importare in codice (.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).

Lo strumento Svcutil consente di importare e includere quando si specifica un URL remoto per metadati.Svcutil follows imports and includes when you specify a remote URL for metadata. Tuttavia, se si desidera elaborare file di metadati sul file system locale, è necessario specificare tutti i file di questo argomento.However, if you want to process metadata files on the local file system, you must specify all files in this argument. In questo modo, è possibile utilizzare Svcutil in un ambiente di compilazione dove non è possibile avere dipendenze della rete.In this way, you can use Svcutil in a build environment where you cannot have network dependencies. È possibile utilizzare caratteri jolly (. xsd, *WSDL) per questo argomento.You can use wildcards (.xsd, *.wsdl) for this argument.
url URL a un endpoint di servizio che fornisce metadati o a un documento di metadati ospitato online.The URL to a service endpoint that provides metadata or to a metadata document hosted online. Per ulteriori informazioni sulla modalità di recupero di questi documenti, vedere la sezione Download dei metadati.For more information on how these documents are retrieved, see the Metadata Download section.
OpzioneOption DescrizioneDescription
/async/async Genera firme di metodi sincrone e asincrone.Generates both synchronous and asynchronous method signatures.

Impostazione predefinita: generare solo firme di metodi sincrone.Default: generate only synchronous method signatures.

Forma abbreviata: /aShort Form: /a
/CollectionType:<tipo >/collectionType:<type> Specifica il tipo di raccolta elenco per un client WCF.Specifies the list collection type for a WCF client.

Valore predefinito: tipo di raccolta è System. Array.Default: collection type is System.Array.

Forma abbreviata: /ctShort Form: /ct
/config:<configFile>/config:<configFile> Specifica il nome file per il file di configurazione generato.Specifies the filename for the generated configuration file.

Impostazione predefinita: output.configDefault: output.config
/dataContractOnly/dataContractOnly Genera solo codice per tipi di contratto dati.Generates code for data contract types only. I tipi di contratto di servizio non vengono generati.Service Contract types are not generated.

Per questa opzione è necessario specificare soltanto file di metadati locali.You should only specify local metadata files for this option.

Forma abbreviata: /dconlyShort Form: /dconly
/enableDataBinding/enableDataBinding Implementa l'interfaccia INotifyPropertyChanged su tutti i tipi di contratto dati per consentire l'associazione dati.Implements the INotifyPropertyChanged interface on all Data Contract types to enable data binding.

Forma abbreviata: /edbShort Form: /edb
/excludeType:<tipo >/excludeType:<type> Specifica un nome tipo completo o un nome completo del tipo dell’assembly da escludere dai tipi di contratto a cui si fa riferimento.Specifies a fully-qualified or assembly-qualified type name to be excluded from referenced contract types.

Se si utilizza questo commutatore insieme con /r di DLL distinte, viene fatto riferimento al nome completo della classe XSD.When using this switch together with /r from separate DLLs, the full name of the XSD class is referenced.

Forma abbreviata: /etShort Form: /et
/importXmlTypes/importXmlTypes Configura il serializzatore DataContract per l'importazione di tipi diversi da DataContract come tipi IXmlSerializable.Configures the Data Contract serializer to import non-Data Contract types as IXmlSerializable types.
/internal/internal Genera classi contrassegnate come interne.Generates classes that are marked as internal. Impostazione predefinita: generare soltanto classi pubbliche.Default: generate public classes only.

Forma abbreviata: /iShort Form: /i
/Language:<lingua >/language:<language> Specifica il linguaggio di programmazione da utilizzare per la generazione del codice.Specifies the programming language to use for code generation. È necessario fornire un nome di linguaggio registrato nel file Machine.config o il nome completo di una classe che eredita da 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.

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

Impostazione predefinita: csharpDefault: csharp

Forma breve: /l Nota: il commutatore supporta solo C++ per il provider di codice fornito con Visual Studio 2005 SP1.Short form: /l Note: The switch only supports C++ for the code provider that ships with Visual Studio 2005 SP1.
/mergeConfig/mergeConfig Incorpora la configurazione generata in un file esistente, anziché sovrascrivere il file esistente.Merges the generated configuration into an existing file, instead of overwriting the existing file.
/messageContract/messageContract Genera tipi di contratto di messaggio.Generates Message Contract types.

Forma abbreviata: /mcShort Form: /mc
/namespace:<string, string >/namespace:<string,string> Specifica un mapping da WSDL o XML Schema targetNamespace a uno spazio dei nomi CLR.Specifies a mapping from a WSDL or XML Schema targetNamespace to a CLR namespace. Utilizzando '*' per targetNamespace associano tutti i targetNamespaces senza un mapping esplicito allo spazio dei nomi CLR.Using '*' for the targetNamespace maps all targetNamespaces without an explicit mapping to that CLR namespace.

Per assicurarsi che il nome del contratto di messaggio non entri in conflitto con il nome dell'operazione, è necessario qualificare il riferimento al tipo con :: o verificare che i nomi siano univoci.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.

Impostazione predefinita: derivata dallo spazio dei nomi di destinazione del documento dello schema per i Contratti dati.Default: Derived from the target namespace of the schema document for Data Contracts. Lo spazio dei nomi predefinito viene utilizzato per tutti gli altri tipi generati.The default namespace is used for all other generated types.

Forma abbreviata: /n Nota: quando si generano tipi da utilizzare con XmlSerializer, solo il mapping di un singolo spazio dei nomi è supportato.Short Form: /n Note: When generating types to use with XmlSerializer, only a single namespace mapping is supported. Tutti i tipi generati sarà lo spazio dei nomi predefinito o lo spazio dei nomi specificato da ' *'.All generated types will either be in the default namespace or the namespace specified by '*'.
/noConfig/noConfig Non genera file di configurazione.Do not generate configuration files.
/noStdLib/noStdLib Non fare riferimento a librerie standard.Do not reference standard libraries.

Impostazione predefinita: viene fatto riferimento a Mscorlib.dll e System.servicemodel.dll.Default: Mscorlib.dll and System.servicemodel.dll are referenced.
/out:<file>/out:<file> Specifica il nome del file per il codice generato.Specifies the file name for the generated code.

Impostazione predefinita: derivata dal nome della definizione di WSDL, dal nome del servizio WSDL o dallo spazio dei nomi di destinazione di uno degli schemi.Default: Derived from the WSDL definition name, WSDL service name or target namespace of one of the schemas.

Forma abbreviata: /oShort form: /o
/Reference:<percorso del file >/reference:<file path> Fa riferimento a tipi nell'assembly specificato.References types in the specified assembly. Quando si generano client, utilizzare questa opzione per specificare assembly che potrebbero contenere tipi che rappresentano i metadati importati.When generating clients, use this option to specify assemblies that might contain types that represent the metadata being imported.

Non è possibile specificare contratti di messaggio e tipi XmlSerializer utilizzando questo commutatore.You cannot specify message contracts and XmlSerializer types using this switch.

Se DateTimeOffset fa riferimento, viene utilizzato questo tipo invece di generare un tipo nuovo.If DateTimeOffset referenced, this type is used instead of generating a new type. Se l'applicazione viene scritta utilizzando .NET Framework 3.5.NET Framework 3.5, SvcUtil.exe fa automaticamente riferimento a DateTimeOffset.If the application is written using .NET Framework 3.5.NET Framework 3.5, SvcUtil.exe references DateTimeOffset automatically.

Forma abbreviata: /rShort Form: /r
/serializable/serializable Genera classi contrassegnate con Attributo serializzabile.Generates classes marked with the Serializable Attribute.

Forma abbreviata: /sShort Form: /s
/serviceContract/serviceContract Genera codice solo per i contratti di servizio.Generate code for service contracts only. La classe e la configurazione client non verranno generate.Client class and configuration will not be generated

Forma abbreviata: /scShort Form: /sc
/serializer:Auto/serializer:Auto Seleziona automaticamente il serializzatore.Automatically select the serializer. Questo tentativo di utilizzare il serializzatore dei contratti dati e utilizza XmlSerializer se l'operazione non riesce.This tries to use the Data Contract serializer and uses the XmlSerializer if that fails.

Forma abbreviata: /serShort Form: /ser
/serializer:DataContractSerializer/serializer:DataContractSerializer Genera tipi di dati che utilizzano DataContract Serializer per la serializzazione e la deserializzazione.Generates data types that use the Data Contract Serializer for serialization and deserialization.

Forma abbreviata: /ser:DataContractSerializerShort Form: /ser:DataContractSerializer
/serializer:XmlSerializer/serializer:XmlSerializer Genera tipi di dati che utilizzano XmlSerializer per la serializzazione e la deserializzazione.Generates data types that use the XmlSerializer for serialization and deserialization.

Forma abbreviata: /ser:XmlSerializerShort Form: /ser:XmlSerializer
/targetClientVersion/targetClientVersion Specifica a quale versione di .NET Framework.NET Framework è destinata l'applicazione.Specify which version of .NET Framework.NET Framework the application is targeting. I valori validi sono Version30 e Version35.Valid values are Version30 and Version35. Il valore predefinito è Version30.The default value is Version30.

Forma abbreviata: /tcvShort Form: /tcv

Version30: utilizzare /tcv:Version30 se si sta generando codice per client che utilizzano WinFXWinFX.Version30: Use /tcv:Version30 if you are generating code for clients that use WinFXWinFX.

Version35: utilizzare /tcv:Version35 se si sta generando codice per client che utilizzano .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. Se si utilizza /tcv:Version35 con il commutatore /async, vengono generati entrambi metodi asincroni sia basati su eventi che su delegati/callback.When using /tcv:Version35 with the /async switch, both event-based and callback/delegate-based asynchronous methods are generated. Viene inoltre abilitato il supporto per dataset abilitati da LINQ e DateTimeOffset.In addition, support for LINQ-enabled DataSets and DateTimeOffset is enabled.
/wrapped/wrapped Controlla se viene utilizzata una combinazione di maiuscole e minuscole speciale per i documenti in stile document-literal con parametri sottoposti a wrapping.Controls whether special-casing is used for document-literal styled documents with wrapped parameters. Utilizzare il / wrapping passare con il Service Model Metadata Utility Tool (Svcutil.exe) strumento per specificare le maiuscole e minuscole normale.Use the /wrapped switch with the Service Model Metadata Utility Tool (Svcutil.exe) tool to specify normal casing.

Nota

Quando l'associazione al servizio è una delle associazioni fornite dal sistema (vedere associazioni fornite dal sistema) e ProtectionLevel proprietà è impostata su None o Sign, Svcutil genera un file di configurazione tramite il <customBinding > elemento anziché l'elemento previsto fornito dal 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. Ad esempio, se il servizio utilizza l'elemento <wsHttpBinding> con ProtectionLevel impostato su Sign, la configurazione generata ha <customBinding> nella sezione delle associazioni anziché <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>. Per ulteriori informazioni sui livelli di protezione, vedere livello di protezione delle informazioni sui.For more information about the protection level, see Understanding Protection Level.

Esportazione dei metadatiMetadata Export

Svcutil.exe è in grado di esportare metadati per servizi, contratti e tipi di dati in assembly compilati.Svcutil.exe can export metadata for services, contracts and data types in compiled assemblies. Per esportare metadati per un servizio, è necessario utilizzare l'opzione /serviceName per specificare il servizio che si desidera esportare.To export metadata for a service, you must use the /serviceName option to specify the service you would like to export. Per esportare tutti i tipi di contratto dati all'interno di un assembly, utilizzare l'opzione /dataContractOnly.To export all data contract types within an assembly, you should use the /dataContractOnly option. Per impostazione predefinita, i metadati vengono esportati per tutti i contratti di servizio negli assembly di input.By default, metadata is exported for all service contracts in the input assemblies.

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

ArgomentoArgument DescrizioneDescription
assemblyPath Specifica il percorso per un assembly contenente servizi, contratti o tipi di contratto dati da esportare.Specifies the path to an assembly that contains services, contracts or data contract types to be exported. È possibile utilizzare caratteri jolly della riga di comando standard per fornire più file come input.Standard command line wildcards can be used to provide multiple files as input.
OpzioneOption DescrizioneDescription
/serviceName:<serviceConfigName>/serviceName:<serviceConfigName> Specifica il nome della configurazione di un servizio da esportare.Specifies the configuration name of a service to be exported. Se viene utilizzata questa opzione, deve essere passato come input un assembly eseguibile con un file di configurazione associato.If this option is used, an executable assembly with an associated configuration file must be passed as input. Svcutil.exe esegue la ricerca in tutti i file di configurazione associati per la configurazione del servizio.Svcutil.exe searches all associated configuration files for the service configuration. Se i file di configurazione contengono qualsiasi tipo di estensione, gli assembly contenenti questi tipi devono essere in GAC o devono essere forniti in modo esplicito utilizzando l'opzione /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:<percorso del file >/reference:<file path> Aggiunge l'assembly specificato al set di assembly utilizzato per la risoluzione di riferimenti del tipo.Adds the specified assembly to the set of assemblies used for resolving type references. Se si sta esportando o convalidando un servizio che utilizza estensioni di terzi (Comportamenti, Associazioni e BindingElements) registrate in configurazione, utilizzare questa opzione per ricercare assembly di estensione che non si trovano in 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 abbreviata: /rShort Form: /r
/dataContractOnly/dataContractOnly Opera soltanto su tipi di contratto dati.Operates on data contract types only. I contratti di servizio non vengono elaborati.Service Contracts are not processed.

Per questa opzione è necessario specificare soltanto file di metadati locali.You should only specify local metadata files for this option.

Forma abbreviata: /dconlyShort Form: /dconly
/excludeType:<tipo >/excludeType:<type> Specifica il nome completo o il nome completo dell’assembly del tipo da escludere dall’esportazione.Specifies the fully-qualified or assembly-qualified name of a type to be excluded from export. Questa opzione può essere utilizzata quando si esportano metadati per un servizio o un set di contratti di servizio per escludere tipi dall'esportazione.This option can be used when exporting metadata for a service, or a set of service contracts to exclude types from being exported. Non è possibile utilizzare questa opzione con l'opzione /dconly.This option cannot be used together with the /dconly option.

Quando si ha un solo assembly contenente più servizi che utilizzano classi separate con lo nome XSD, è necessario specificare il nome del servizio anziché il nome della classe XSD per questo commutatore.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.

Non vengono supportati tipi XSD o tipi di contratto dati.XSD or data contract types are not supported.

Forma abbreviata: /etShort Form: /et

Convalida del servizioService Validation

È possibile utilizzare la convalida per rilevare errori in implementazioni del servizio senza ospitare il servizio.Validation can be used to detect errors in service implementations without hosting the service. È necessario utilizzare l'opzione /serviceName per indicare il servizio che si desidera convalidare.You must use the /serviceName option to indicate the service you want to validate.

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

ArgomentoArgument DescrizioneDescription
assemblyPath Specifica il percorso per un assembly contenente tipi di contratto di servizio da convalidare.Specifies the path to an assembly that contains service types to be validated. L'assembly deve avere un file di configurazione associato per fornire la configurazione del servizio.The assembly must have an associated configuration file to provide service configuration. È possibile utilizzare caratteri jolly della riga di comando standard per fornire più assembly.Standard command-line wildcards can be used to provide multiple assemblies.
OpzioneOption DescrizioneDescription
/validate/validate Convalida un'implementazione del servizio specificata dall'opzione /serviceName.Validates a service implementation specified by the /serviceName option. Se viene utilizzata questa opzione, deve essere passato come input un assembly eseguibile con un file di configurazione associato.If this option is used, an executable assembly with an associated configuration file must be passed as input.

Forma abbreviata: /vShort Form: /v
/serviceName:<serviceConfigName>/serviceName:<serviceConfigName> Specifica il nome della configurazione di un servizio da convalidare.Specifies the configuration name of a service to be validated. Svcutil.exe esegue la ricerca in tutti i file di configurazione associati di tutti gli assembly di input per la configurazione del servizio.Svcutil.exe searches all associated configuration files of all input assemblies for the service configuration. Se i file di configurazione contengono qualsiasi tipo di estensione, gli assembly contenenti questi tipi devono essere in GAC o devono essere forniti in modo esplicito utilizzando l'opzione /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:<percorso del file >/reference:<file path> Aggiunge l'assembly specificato al set di assembly utilizzato per la risoluzione di riferimenti del tipo.Adds the specified assembly to the set of assemblies used for resolving type references. Se si sta esportando o convalidando un servizio che utilizza estensioni di terzi (Comportamenti, Associazioni e BindingElements) registrate in configurazione, utilizzare questa opzione per ricercare assembly di estensione che non si trovano in 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 abbreviata: /rShort Form: /r
/dataContractOnly/dataContractOnly Opera soltanto su tipi di contratto dati.Operates on data contract types only. I contratti di servizio non vengono elaborati.Service Contracts are not processed.

Per questa opzione è necessario specificare soltanto file di metadati locali.You should only specify local metadata files for this option.

Forma abbreviata: /dconlyShort Form: /dconly
/excludeType:<tipo >/excludeType:<type> Specifica il nome completo o il nome completo dell’assembly del tipo da escludere dalla convalida.Specifies the fully-qualified or assembly-qualified name of a type to be excluded from validation.

Forma abbreviata: /etShort Form: /et

Download dei metadatiMetadata Download

È possibile utilizzare Svcutil.exe per scaricare i metadati dai servizi in esecuzione e salvarli in file locali.Svcutil.exe can be used to download metadata from running services, and save the metadata to local files. Per scaricare i metadati, è necessario specificare l'opzione /t:metadata.To download metadata, you must specify the /t:metadata option. In caso contrario, viene generato il codice client.Otherwise, client code is generated. Per schemi URL HTTP e HTTPS, Svcutil.exe tenta di recuperare i metadati mediante WS-Metadata Exchange e DISCO.For HTTP and HTTPS URL schemes, Svcutil.exe attempts to retrieve metadata using WS-Metadata Exchange and DISCO. Per tutti gli altri schemi URL, Svcutil.exe utilizza solo WS-Metadata Exchange.For all other URL schemes, Svcutil.exe only uses WS-Metadata Exchange.

Svcutil genera le richieste di metadati seguenti simultaneamente per recuperare metadati.Svcutil issues the following metadata requests simultaneously to retrieve metadata.

  • Richiesta MEX (WS-Transfer) all'indirizzo fornitoMEX (WS-Transfer) request to the supplied address

  • Richiesta MEX all'indirizzo fornito con /mex accodatiMEX request to the supplied address with /mex appended

  • Richiesta DISCO (utilizzo di DiscoveryClientProtocol da ASMX) all'indirizzo fornito.DISCO request (using the DiscoveryClientProtocol from ASMX) to the supplied address.

Per impostazione predefinita, Svcutil.exe utilizza le associazioni definite nella classe MetadataExchangeBindings per generare richieste MEX.By default, Svcutil.exe uses the bindings defined in the MetadataExchangeBindings class to make MEX requests. Per configurare l'associazione utilizzata per WS-Metadata Exchange è necessario definire un endpoint client in configurazione che utilizza il contratto IMetadataExchange.To configure the binding used for WS-Metadata Exchange, you must define a client endpoint in configuration that uses the IMetadataExchange contract. Ciò può essere definito nel file di configurazione di Svcutil.exe o in un altro file di configurazione specificato utilizzando l'opzione /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>

ArgomentoArgument DescrizioneDescription
url URL a un endpoint di servizio che fornisce metadati o a un documento di metadati ospitato online.The URL to a service endpoint that provides metadata or to a metadata document hosted online.
epr Percorso di un file XML contenente un EndpointReference WS-Addressing per un endpoint di servizio che supporta WS-MetadataExchange.The path to an XML file that contains a WS-Addressing EndpointReference for a service endpoint that supports WS-Metadata Exchange.

Generazione del tipo XmlSerializerXmlSerializer Type Generation

I servizi e le applicazioni client che utilizzano tipi di dati serializzabili tramite XmlSerializer generano e compilano il codice di serializzazione per tali dati in fase di esecuzione, il che può rallentare le prestazioni all'avvio.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

Un codice di serializzazione pregenerato può essere utilizzato solamente nelle applicazioni client e non nei servizi.Pre-generated serialization code can only be used in client applications and not in services.

Svcutil.exe può generare il codice di serializzazione C# necessario dagli assembly compilati per l’applicazione, migliorando le prestazioni all'avvio per queste applicazioni.Svcutil.exe can generate the necessary C# serialization code from the compiled assemblies for the application, thus improving start-up performance for these applications. Per ulteriori informazioni, vedere procedura: migliorare l'avvio del tempo di applicazioni Client WCF usando XmlSerializer.For more information, see How to: Improve the Startup Time of WCF Client Applications using the XmlSerializer.

Nota

Svcutil.exe genera soltanto codice per tipi utilizzati dai Contratti di Servizio che si trovano negli assembly di input.Svcutil.exe only generates code for types used by Service Contracts found in the input assemblies.

svcutil.exe /t:xmlSerializer <assemblyPath>*

ArgomentoArgument DescrizioneDescription
assemblyPath Specifica il percorso per un assembly contenente tipi di contratto di servizio.Specifies the path to an assembly that contains service contract types. I tipi di serializzazione vengono generati per tutti i tipi serializzabili in Xml in ogni contratto.Serialization types are generated for all Xml Serializable types in each contract.
OpzioneOption DescrizioneDescription
/Reference:<percorso del file >/reference:<file path> Aggiunge l'assembly specificato al set di assembly utilizzato per la risoluzione di riferimenti del tipo.Adds the specified assembly to the set of assemblies used for resolving type references.

Forma abbreviata: /rShort Form: /r
/excludeType:<tipo >/excludeType:<type> Specifica il nome completo o il nome completo dell’assembly del tipo da escludere dall’esportazione o convalida.Specifies the fully-qualified or assembly-qualified name of a type to be excluded from export or validation.

Forma abbreviata: /etShort Form: /et
/out:<file>/out:<file> Specifica il nome file per il codice generato.Specifies the filename for the generated code. Questa opzione è ignorata quando più assembly vengono passati come input allo strumento.This option is ignored when multiple assemblies are passed as input to the tool.

Impostazione predefinita: derivata dal nome dell'assembly.Default: Derived from the assembly name.

Forma abbreviata: /oShort Form: /o
/UseSerializerForFaults/UseSerializerForFaults Specifica che il xref:System.Xml.XmlSerializer deve essere utilizzato per la lettura e scrittura degli errori, anziché il valore predefinito DataContractSerializer.Specifies that the xref:System.Xml.XmlSerializer should be used for reading and writing faults, instead of the default DataContractSerializer.

EsempiExamples

Il comando seguente consente di generare il codice client da un servizio in esecuzione o da documenti di metadati online.The following command generates client code from a running service or online metadata documents.

svcutil http://service/metadataEndpoint

Il comando seguente consente di generare il codice client da documenti di metadati locali.The following command generates client code from local metadata documents.

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

Il comando seguente consente di generare tipi di contratto dati in Visual Basic dai documenti di schema locali.The following command generates data contract types in Visual Basic from local schema documents.

svcutil /dconly *.xsd /language:VB

Il comando seguente consente di scaricare i documenti di metadati da servizi in esecuzione.The following command downloads metadata documents from running services.

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

Il comando seguente consente di generare i documenti di metadati per contratti di servizio tipi associati in un assembly.The following command generates metadata documents for service contracts and associated types in an assembly.

svcutil myAssembly.dll

Il comando seguente consente di generare documenti di metadati per un servizio e tutti i contratti di servizio e tipi di dati associati in 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

Il comando seguente consente di generare documenti di metadati per tipi di dati in un assembly.The following command generates metadata documents for data types in an assembly.

svcutil myServiceHost.exe /dconly

Il comando seguente consente di verificare l’host del servizio.The following command verifies service hosting.

svcutil /validate /serviceName:myServiceName myServiceHost.exe

Il comando seguente consente di generare tipi di serializzazione per i tipi XmlSerializer utilizzati da qualsiasi contratto di servizio nell'assembly.The following command generates serialization types for XmlSerializer types used by any service contracts in the assembly.

svcutil /t:xmlserializer myContractLibrary.exe

Quota per il numero massimo di caratteri della tabella dei nomi.Maximum Nametable Character Count Quota

Quando si utilizza svcutil per generare metadati per un servizio, è possibile che venga visualizzato il messaggio seguente:When using svcutil to generate metadata for a service, you may get the following message:

Errore: Impossibile ottenere i metadati da http://localhost:8000/somesservice/mex la quota di conteggio carattere massimo della tabella dei nomi (16384) superata durante la lettura dei dati 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 tabella dei nomi è una struttura dati utilizzata per memorizzare le stringhe trovate durante l'elaborazione dei dati XML. Documenti XML lunghi con nomi di elementi, nomi di attributi e valori di attributi non ripetuti possono comportare il superamento della 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. Tale quota può essere incrementata modificando la proprietà MaxNameTableCharCount dell'oggetto XmlDictionaryReaderQuotas utilizzato durante la creazione del lettore XML.This quota may be increased by changing the MaxNameTableCharCount property on the XmlDictionaryReaderQuotas object used when creating the XML reader.

Questo errore può essere causato dalla restituzione di un file WSDL di grandi dimensioni da parte di un servizio quando vengono richiesti i relativi metadati.This error can be caused by a service that returns a large WSDL file when you request its metadata. Il problema deriva dal superamento della quota di caratteri per lo strumento svcutil.exe.The problem is that the character quota for the svcutil.exe tool is exceeded. Questo valore viene impostato per contribuire a impedire attacchi di tipo Denial of Service (DoS).This value is set to help prevent denial of service (dos) attacks. Questa quota può essere aumentata specificando il seguente file di configurazione per svcutil.You can increase this quota by specifying the following config file for svcutil.

Nel file di configurazione seguente viene mostrato come impostare le quote del lettore per svcutilThe 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>  

Creare un nuovo file denominato svcutil.exe.config e copiarvi il codice XML di esempio.Create a new file called svcutil.exe.config and copy the XML example code into it. Posizionare il file nella stessa directory in cui si trova svcutil.exe.Then place the file in the same directory as svcutil.exe. Alla successiva esecuzione di svcutil.exe, verranno utilizzate le nuove impostazioni.The next time svcutil.exe is run it will pick up the new settings.

Problemi di sicurezzaSecurity Concerns

È necessario utilizzare l'elenco di controllo di accesso (ACL) appropriato per proteggere la cartella di installazione di Svcutil.exe, Svcutil.config e i file ai quali fa riferimento /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. Ciò può impedire la registrazione ed esecuzione di codice dannoso.This can prevent malicious extensions from being registered and run.

Per ridurre inoltre le probabilità che la sicurezza sia compromessa, non è necessario aggiungere estensioni non attendibili che entrino a far parte del sistema o utilizzare provider di codice non attendibili 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.

Infine, non è necessario utilizzare lo strumento al livello intermedio dell'applicazione, in quanto ciò può provocare l’attacco Denial of Service al processo corrente.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.

Vedere ancheSee Also

DataContractAttribute
DataMemberAttribute
Procedura: Creare un clientHow to: Create a Client