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

Das ServiceModel Metadata Utility Tool wird zum Generieren von Service Model-Code aus Metadatendokumenten und zum Generieren von Metadatendokumenten aus Service Model-Code verwendet.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

Das ServiceModel Metadata Utility Tool befindet sich unter dem Windows SDK-Installationspfad: C:\Programme\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

FunktionenFunctionalities

In der folgenden Tabelle sind die verschiedenen Funktionen dieses Tools aufgeführt sowie die Themen, in denen die entsprechenden Vorgehensweisen beschrieben werden.The following table summarizes the various functionalities provided by this tool and the corresponding topic that discusses how it is used.

AufgabeTask ThemaTopic
Generiert Code von ausführenden Diensten oder statischen Metadatendokumenten.Generates code from running services or static metadata documents. Generieren eines WCF-Clients aus DienstmetadatenGenerating a WCF Client from Service Metadata
Exportiert Metadatendokumente aus kompiliertem Code.Exports metadata documents from compiled code. Vorgehensweise: Verwenden von „Svcutil.exe“ zum Exportieren von Metadaten aus kompiliertem DienstcodeHow to: Use Svcutil.exe to Export Metadata from Compiled Service Code
Überprüft kompilierten Dienstcode.Validates compiled service code. Vorgehensweise: Verwenden von „Svcutil.exe“ zum Überprüfen von kompiliertem DienstcodeHow to: Use Svcutil.exe to Validate Compiled Service Code
Lädt Metadatendokumente aus Diensten herunter, die zurzeit ausgeführt werden.Downloads metadata documents from running services. Vorgehensweise: Verwenden von „Svcutil.exe“ zum Herunterladen von MetadatendokumentenHow to: Use Svcutil.exe to Download Metadata Documents
Generiert Serialisierungscode.Generates serialization code. Vorgehensweise: Verbessern der Startzeit von WCF-Clientanwendungen mit dem XmlSerializerHow to: Improve the Startup Time of WCF Client Applications using the XmlSerializer

Achtung

Svcutil überschreibt vorhandene Dateien auf einem Datenträger, wenn die als Parameter angegebenen Namen identisch sind.Svcutil will overwrite existing files on a disk if the names supplied as parameters are identical. Dazu zählen Codedateien, Konfigurationsdateien oder Metadatendateien.This can include code files, configuration or metadata files. Um dies beim Generieren von Code- und Konfigurationsdateien zu vermeiden, verwenden Sie den /mergeConfig-Schalter.To avoid this when generating code and configuration flies, use the /mergeConfig switch.

Darüber hinaus die /r und /ct -Schalter für Verweistypen sind, zum Generieren von Datenverträgen.In addition, the /r and /ct switches for referencing types are for generating data contracts. Diese Schalter funktionieren nicht, wenn Sie XmlSerializer verwenden.These switches do not work when using XmlSerializer.

TimeoutTimeout

Für das Tool gilt ein 5-Minuten-Timeout beim Abrufen von Metadaten.The tool has a 5 minute timeout when retrieving metadata. Dieses Timeout gilt nur beim Abrufen von Metadaten über das Netzwerk.This timeout only applies to retrieving metadata over the network. Es gilt nicht für die Verarbeitung dieser Metadaten.It does not apply to any processing of that metadata.

Festlegung von ZielversionenMulti-targetting

Das Tool unterstützt die Festlegung von Zielversionen nicht.The tool does not support multi-targeting. Wenn Sie mithilfe von „svcutil.exe“ ein .NET 4-Artefakt generieren möchten, müssen Sie „svcutil.exe“ aus dem .NET 4-SDK verwenden.If you want to generate a .NET 4 artifact from svcutil.exe, you have to use the svcutil.exe from the .NET 4 SDK. Verwenden Sie die ausführbare Datei aus dem .NET 3.5-SDK, um ein .NET 3.5-Artefakt zu generieren.To generate a .NET 3.5 artifact, use the executable from the .NET 3.5 SDK.

Zugreifen auf WSDL-DokumenteAccessing WSDL Documents

Wenn Sie mit Svcutil auf ein WSDL-Dokument zugreifen, das einen Verweis auf einen Sicherheitstokendienst (STS) enthält, führt Svcutil einen WS-MetadataExchange-Aufruf zu STS aus.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. Der Dienst kann jedoch seine WSDL-Dokumente entweder mithilfe von WS-MetadataExchange oder mithilfe von HTTP GET verfügbar machen.However, the service can expose its WSDL documents using either WS-MetadataExchange or HTTP GET. Hat der STS das WSDL-Dokument nur mithilfe von HTTP GET verfügbar gemacht, schlägt daher ein in WinFXWinFX geschriebener Client fehl.Therefore, if the STS has only exposed the WSDL document using HTTP GET, a client written in WinFXWinFX will fail. Für in .NET Framework 3,5.NET Framework 3.5 geschriebene Clients versucht Svcutil, den STS WSDL sowohl mithilfe von WS-MetadataExchange als auch mit HTTP GET abzurufen.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.

Verwenden von SvcUtil.exeUsing SvcUtil.exe

Allgemeine VerwendungenCommon Usages

In der folgenden Tabelle werden einige der häufig verwendeten Optionen für dieses Tool aufgeführt.The following table shows some commonly used options for this tool.

OptionOption BeschreibungDescription
/ Directory:<Verzeichnis >/directory:<directory> Das Verzeichnis, in dem die Dateien erstellt werden sollen.Directory to create files in.

Standard: Das aktuelle Verzeichnis.Default: The current directory.

Kurzform: /d.Short form: /d
/help/help Zeigt die Befehlssyntax und Optionen für das Tool an.Displays the command syntax and options for the tool.

Kurzform: /?.Short form: /?
/noLogo/noLogo Die Copyright- und die Bannermeldung werden unterdrückt.Suppress the copyright and banner message.
/ svcutilconfig:<ConfigFile >/svcutilConfig:<configFile> Gibt eine benutzerdefinierte Konfigurationsdatei an, die statt der Datei App.config verwendet werden soll.Specifies a custom configuration file to use instead of the App.config file. Dies kann verwendet werden, um system.serviceModel-Erweiterungen zu registrieren, ohne die Konfigurationsdatei des Tools zu ändern.This can be used to register system.serviceModel extensions without altering the tool's configuration file.
/ target:<Ausgabetyp >/target:<output type> Gibt die Ausgabe an, die vom Tool generiert werden soll.Specifies the output to be generated by the tool.

Gültige Werte sind Code, Metadaten oder xmlSerializer.Valid values are code, metadata or xmlSerializer.

Kurzform: /t.Short form: /t

CodegenerierungCode Generation

Svcutil.exe kann Code für Dienstverträge, Clients und Datentypen aus Metadatendokumenten generieren.Svcutil.exe can generate code for service contracts, clients and data types from metadata documents. Diese Metadatendokumente können sich in einem permanenten Speicher befinden oder online abgerufen werden.These metadata documents can be on a durable storage, or be retrieved online. Der Onlineabruf erfolgt gemäß dem WS-Metadata Exchange-Protokoll oder DISCO-Protokoll (weitere Informationen finden Sie im Abschnitt Metadatendownload).Online retrieval follows either the WS-Metadata Exchange protocol or the DISCO protocol (for details see the Metadata Download section).

Sie können das Tool "SvcUtil.exe" zum Generieren von Dienst - und Datenverträgen auf Grundlage eines vordefinierten WSDL-Dokuments verwenden.You can use the SvcUtil.exe tool to generate service and data contracts based on a predefined WSDL document. Verwenden Sie den /serviceContract-Schalter, und geben Sie eine URL oder einen Dateipfad für den Speicherort des WSDL-Dokuments an, an dem es gefunden oder heruntergeladen werden kann.Use the /serviceContract switch and specify a URL or file location where the WSDL document can be downloaded or found. Dadurch werden die im WSDL-Dokument definierten Dienst- und Datenverträge generiert, die zum Implementieren eines kompatiblen Diensts verwendet werden können.This will generate the service and data contracts defined in the WSDL document that can then be used to implement a complaint service . Weitere Informationen finden Sie unterFor more information, seeVorgehensweise: Abrufen von Metadaten und Implementieren eines kompatiblen Diensts. How to: Retrieve Metadata and Implement a Compliant Service.

Für einen Dienst mit einem BasicHttpContextbinding-Endpunkt generiert Svcutil.exe stattdessen eine BasicHttpBinding, deren allowCookies-Attribut auf true festgelegt ist.For a service with a BasicHttpContextbinding endpoint, Svcutil.exe generates a BasicHttpBinding with the allowCookies attribute set to true instead. Die Cookies werden auf dem Server für den Kontext verwendet.The cookies are used for context on the server. Möchten Sie den Kontext auf dem Client verwalten, wenn der Dienst Cookies verwendet, so können Sie die Konfiguration manuell für die Verwendung einer Kontextbindung ändern.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.

Achtung

Svcutil.exe generiert den Client auf der Basis der vom Dienst empfangenen WSDL- oder Richtliniendatei.Svcutil.exe generates the client based on the WSDL or policy file received from the service. Der Benutzerprinzipalname (UPN) wird generiert durch die Aneinanderreihung von Benutzername, "@" und vollqualifiziertem Domänennamen (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="b3553-172">Für in Active Directory registrierte Benutzer ist dieses Format jedoch nicht gültig, und der vom Tool generierte UPN verursacht einen Fehler bei der Kerberos-Authentifizierung mit der Fehlermeldung "Der Anmeldeversuch ist fehlgeschlagen".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". Um dieses Problem zu beheben, sollten Sie die von diesem Tool generierte Clientdatei manuell reparieren.To resolve this problem, you should manually fix the client file generated by this tool.

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

ArgumentArgument BeschreibungDescription
epr Der Pfad zu einer XML-Datei, die einen WS-Addressing-EndpointReference für einen Dienstendpunkt enthält, der WS-Metadata Exchange unterstützt.The path to an XML file that contains a WS-Addressing EndpointReference for a service endpoint that supports WS-Metadata Exchange. Weitere Informationen finden Sie im Abschnitt Metadatendownload.For more information, see the Metadata Download section.
metadataDocumentPath Der Pfad zu einem Metadatendokument (wsdl oder xsd), der den in den Code zu importierenden Vertrag enthält (.wsdl, .xsd, .wspolicy oder .wsmex).The path to a metadata document (wsdl or xsd) that contains the contract to import into code (.wsdl, .xsd, .wspolicy or .wsmex).

Svcutil folgt Importen und bezieht eine Remote-URL für Metadaten ein, sofern diese angegeben wird.Svcutil follows imports and includes when you specify a remote URL for metadata. Wenn Metadatendateien im lokalen Dateisystem verarbeitet werden sollen, müssen Sie alle Dateien in diesem Argument angeben.However, if you want to process metadata files on the local file system, you must specify all files in this argument. Auf diese Art können Sie Svcutil in einer Buildumgebung verwenden, in der keine Netzwerkabhängigkeiten möglich sind.In this way, you can use Svcutil in a build environment where you cannot have network dependencies. Sie können Platzhalter verwenden (.xsd, *.wsdl) für dieses Argument.You can use wildcards (.xsd, *.wsdl) for this argument.
url Die URL zu einem Dienstendpunkt, der Metadaten bereitstellt, oder zu einem Metadatendokument, das online gehostet wird.The URL to a service endpoint that provides metadata or to a metadata document hosted online. Weitere Informationen dazu, wie diese Dokumente abgerufen werden, finden Sie im Abschnitt Metadatendownload.For more information on how these documents are retrieved, see the Metadata Download section.
OptionOption BeschreibungDescription
/async/async Generiert sowohl synchrone als auch asynchrone Methodensignaturen.Generates both synchronous and asynchronous method signatures.

Standard: Es werden nur synchrone Methodensignaturen generiert.Default: generate only synchronous method signatures.

Kurzform: /a.Short Form: /a
/CollectionType:<Typ >/collectionType:<type> Gibt den Listenauflistungstyp für einen WCF-Client an.Specifies the list collection type for a WCF client.

Standardwert: Auflistungstyp ist System.Array.Default: collection type is System.Array.

Kurzform: /ct.Short Form: /ct
/ config:<ConfigFile >/config:<configFile> Gibt den Dateinamen für die generierte Konfigurationsdatei an.Specifies the filename for the generated configuration file.

Standard: output.config.Default: output.config
/dataContractOnly/dataContractOnly Generiert nur Code für Datenvertragstypen.Generates code for data contract types only. Dienstvertragstypen werden nicht generiert.Service Contract types are not generated.

Sie sollten nur lokale Metadatendateien für diese Option angeben.You should only specify local metadata files for this option.

Kurzform: /dconly.Short Form: /dconly
/enableDataBinding/enableDataBinding Implementiert die INotifyPropertyChanged-Schnittstelle für alle Datenvertragstypen, um die Datenbindung zu ermöglichen.Implements the INotifyPropertyChanged interface on all Data Contract types to enable data binding.

Kurzform: /edb.Short Form: /edb
/excludeType:<Typ >/excludeType:<type> Gibt einen vollqualifizierten oder assemblyqualifizierten Namen an, der aus den verwiesenen Vertragstypen ausgeschlossen werden soll.Specifies a fully-qualified or assembly-qualified type name to be excluded from referenced contract types.

Beim Verwenden dieses Schalters mit /r aus separaten DLLs wird auf den vollständigen Namen der XSD-Klasse verwiesen.When using this switch together with /r from separate DLLs, the full name of the XSD class is referenced.

Kurzform: /et.Short Form: /et
/importXmlTypes/importXmlTypes Konfiguriert den Datenvertragsserialisierer, um Nicht-Datenvertragstypen als IXmlSerializable-Typen zu importieren.Configures the Data Contract serializer to import non-Data Contract types as IXmlSerializable types.
/internal/internal Generiert Klassen, die als intern markiert sind.Generates classes that are marked as internal. Standard: Generiert nur öffentliche Klassen.Default: generate public classes only.

Kurzform: /i.Short Form: /i
/ Language:<Language >/language:<language> Gibt die Programmiersprache an, die zur Codegenerierung verwendet werden soll.Specifies the programming language to use for code generation. Sie können entweder einen in der Datei Machine.config registrierten Sprachnamen oder den vollqualifizierten Namen einer Klasse angeben, der von CodeDomProvider erbt.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.

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

Standard: csharpDefault: csharp

Kurzform: /l Hinweis: der Switch unterstützt nur C++ für den Codeanbieter, die mit Visual Studio 2005 SP1 geliefert wird.Short form: /l Note: The switch only supports C++ for the code provider that ships with Visual Studio 2005 SP1.
/mergeConfig/mergeConfig Fügt die generierte Konfiguration in eine vorhandene Datei ein, statt die vorhandene Datei zu überschreiben.Merges the generated configuration into an existing file, instead of overwriting the existing file.
/messageContract/messageContract Generiert Nachrichtenvertragstypen.Generates Message Contract types.

Kurzform: /mc.Short Form: /mc
/ Namespace:<Zeichenfolge, Zeichenfolge >/namespace:<string,string> Gibt eine Zuordnung von einem WSDL- oder XML-Schema-targetNamespace zu einem CLR-Namespace an.Specifies a mapping from a WSDL or XML Schema targetNamespace to a CLR namespace. Mit "*" für den TargetNamespace alle TargetNamespaces ohne eine explizite Zuordnung diesem CLR-Namespace zugeordnet.Using '*' for the targetNamespace maps all targetNamespaces without an explicit mapping to that CLR namespace.

Um zu gewährleisten, dass der Nachrichtenvertragsname nicht mit dem Vorgangsnamen in Konflikt steht, sollten Sie den Typverweis entweder mit :: angeben oder sicherstellen, dass die Namen einmalig sind.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.

Standard: Wird vom Zielnamespace des Schemadokuments für Datenverträge abgeleitet.Default: Derived from the target namespace of the schema document for Data Contracts. Der Standardnamespace wird für alle anderen generierten Typen verwendet.The default namespace is used for all other generated types.

Kurzform: /n Hinweis: beim Generieren von Typen für die Verwendung mit XmlSerializer-Element wird nur eine einzelner Namespace-Zuordnung unterstützt.Short Form: /n Note: When generating types to use with XmlSerializer, only a single namespace mapping is supported. Alle generierte Typen werden entweder in den Standardnamespace oder den Namespace, angegeben durch "".All generated types will either be in the default namespace or the namespace specified by ''.
/noConfig/noConfig Es werden keine Konfigurationsdateien generiert.Do not generate configuration files.
/noStdLib/noStdLib Verweist nicht auf Standardbibliotheken.Do not reference standard libraries.

Standard: Es wird auf Mscorlib.dll und System.servicemodel.dll verwiesen.Default: Mscorlib.dll and System.servicemodel.dll are referenced.
/ out:<Datei >/out:<file> Gibt den Dateinamen für den generierten Code an.Specifies the file name for the generated code.

Standard: Wird vom WSDL-Definitionsnamen, WSDL-Dienstnamen oder Zielnamespace eines der Schemas abgeleitet.Default: Derived from the WSDL definition name, WSDL service name or target namespace of one of the schemas.

Kurzform: /o.Short form: /o
/ reference:<Dateipfad >/reference:<file path> Verweist auf Typen in der angegebenen Assembly.References types in the specified assembly. Beim Generieren von Clients können Sie diese Option verwenden, um Assemblys anzugeben, die unter Umständen die Typen mit den zu importierenden Metadaten enthalten.When generating clients, use this option to specify assemblies that might contain types that represent the metadata being imported.

Sie können mit diesem Schalter keine Nachrichtenverträge oder XmlSerializer-Typen angeben.You cannot specify message contracts and XmlSerializer types using this switch.

Wenn auf DateTimeOffset verwiesen wird, wird dieser Typ verwendet, statt einen neuen Typ zu generieren.If DateTimeOffset referenced, this type is used instead of generating a new type. Wenn die Anwendung mit .NET Framework 3,5.NET Framework 3.5 geschrieben wird, verweist SvcUtil.exe automatisch auf DateTimeOffset.If the application is written using .NET Framework 3,5.NET Framework 3.5, SvcUtil.exe references DateTimeOffset automatically.

Kurzform: /r.Short Form: /r
/serializable/serializable Generiert mit dem Serializable-Attribut markierte Klassen.Generates classes marked with the Serializable Attribute.

Kurzform: /s.Short Form: /s
/serviceContract/serviceContract Generiert nur Code für Dienstverträge.Generate code for service contracts only. Clientklasse und -konfiguration werden nicht generiert.Client class and configuration will not be generated

Kurzform: /sc.Short Form: /sc
/serializer:Auto/serializer:Auto Wählen Sie das Serialisierungsprogramm automatisch aus.Automatically select the serializer. Versucht, den Datenvertragsserialisierer zu verwenden, und das XmlSerializer-Element verwendet, wenn dieser Vorgang fehlschlägt.This tries to use the Data Contract serializer and uses the XmlSerializer if that fails.

Kurzform: /ser.Short Form: /ser
/serializer:DataContractSerializer/serializer:DataContractSerializer Generiert Datentypen, die den Datenvertragsserialisierer für die Serialisierung und die Deserialisierung verwenden.Generates data types that use the Data Contract Serializer for serialization and deserialization.

Kurzform: /ser:DataContractSerializer.Short Form: /ser:DataContractSerializer
/serializer:XmlSerializer/serializer:XmlSerializer Generiert Datentypen, die XmlSerializer für die Serialisierung und die Deserialisierung verwenden.Generates data types that use the XmlSerializer for serialization and deserialization.

Kurzform: /ser:XmlSerializer.Short Form: /ser:XmlSerializer
/targetClientVersion/targetClientVersion Geben Sie an, für welche Version von .NET Framework.NET Framework die Anwendung vorgesehen ist.Specify which version of .NET Framework.NET Framework the application is targeting. Gültige Werte sind Version30 und Version35.Valid values are Version30 and Version35. Der Standardwert ist Version30.The default value is Version30.

Kurzform: /tcv.Short Form: /tcv

Version30: Verwenden Sie /tcv:Version30, wenn Sie Code für Clients generieren, die WinFXWinFX verwenden.Version30: Use /tcv:Version30 if you are generating code for clients that use WinFXWinFX.

Version35: Verwenden Sie /tcv:Version35, wenn Sie Code für Clients generieren, die .NET Framework 3,5.NET Framework 3.5 verwenden.Version35: Use /tcv:Version35 if you are generating code for clients that use .NET Framework 3,5.NET Framework 3.5. Wenn Sie /tcv:Version35 mit dem Schalter /async verwenden, werden ereignisbasierte und rückruf-/delegatbasierte asynchrone Methoden generiert.When using /tcv:Version35 with the /async switch, both event-based and callback/delegate-based asynchronous methods are generated. Außerdem wird damit Unterstützung für LINQ-aktivierte DataSets und DateTimeOffset aktiviert.In addition, support for LINQ-enabled DataSets and DateTimeOffset is enabled.
/wrapped/wrapped Steuert, ob besondere Bedingungen für Dokumente im Dokument-Literal-Stil mit eingeschlossenen Parametern verwendet werden.Controls whether special-casing is used for document-literal styled documents with wrapped parameters. Verwenden der / wrapped wechseln Sie mit der Service Model Metadata Utility Tool (Svcutil.exe) Tool, um normale Bedingungen festzulegen.Use the /wrapped switch with the Service Model Metadata Utility Tool (Svcutil.exe) tool to specify normal casing.

Hinweis

Wenn die dienstbindung ist eine vom System bereitgestellten Bindungen (finden Sie unter sicherheitsbindungsarten Bindungen), und die ProtectionLevel festgelegt wird entweder None oder Sign, generiert Svcutil eine Konfigurationsdatei mit den <CustomBinding > Element anstelle des erwarteten vom System bereitgestellten Elements.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. Wenn der Dienst beispielsweise das <wsHttpBinding>-Element verwendet, für das ProtectionLevel auf Sign festgelegt ist, wird im Bindungsabschnitt der generierten Konfiguration <customBinding> anstatt <wsHttpBinding> angezeigt.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>. Weitere Informationen zum Schutzgrad finden Sie unter Verständnis Schutzebene.For more information about the protection level, see Understanding Protection Level.

MetadatenexportMetadata Export

Svcutil.exe kann Metadaten für Dienste, Verträge und Datentypen in kompilierten Assemblys exportieren.Svcutil.exe can export metadata for services, contracts and data types in compiled assemblies. Um Metadaten für einen Dienst zu exportieren, müssen Sie den zu exportierenden Dienst mit der /serviceName-Option angeben.To export metadata for a service, you must use the /serviceName option to specify the service you would like to export. Um alle Datenvertragstypen innerhalb einer Assembly zu exportieren, verwenden Sie die /dataContractOnly-Option.To export all data contract types within an assembly, you should use the /dataContractOnly option. Standardmäßig werden die Metadaten für alle Dienstverträge in den Eingabeassemblys exportiert.By default, metadata is exported for all service contracts in the input assemblies.

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

ArgumentArgument BeschreibungDescription
assemblyPath Gibt den Pfad zu einer Assembly an, die zu exportierende Dienste, Verträge oder Datenvertragstypen enthält.Specifies the path to an assembly that contains services, contracts or data contract types to be exported. Sie können standardmäßige Befehlszeilenplatzhalter verwenden, um mehrere Dateien anzugeben.Standard command line wildcards can be used to provide multiple files as input.
OptionOption BeschreibungDescription
/ ServiceName:<ServiceConfigName >/serviceName:<serviceConfigName> Gibt den Konfigurationsnamen eines Diensts an, der exportiert werden soll.Specifies the configuration name of a service to be exported. Bei Verwendung dieser Option muss eine ausführbare Assembly mit einer zugeordneten Konfigurationsdatei als Eingabe übergeben werden.If this option is used, an executable assembly with an associated configuration file must be passed as input. Svcutil.exe durchsucht alle zugeordneten Konfigurationsdateien für die Dienstkonfiguration.Svcutil.exe searches all associated configuration files for the service configuration. Wenn die Konfigurationsdateien Erweiterungstypen enthalten, müssen die Assemblys, die diese Typen enthalten, sich entweder im GAC befinden oder ausdrücklich durch die /reference-Option angegeben werden.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:<Dateipfad >/reference:<file path> Fügt die angegebene Assembly dem Satz von Assemblys hinzu, der zum Auflösen von Typverweisen verwendet wird.Adds the specified assembly to the set of assemblies used for resolving type references. Wenn Sie einen Dienst exportieren oder überprüfen, der in der Konfiguration registrierte Drittanbietererweiterungen verwendet (Verhalten, Bindungen und Bindungselemente), können Sie diese Option zum Suchen von Erweiterungsassemblys einsetzen, die sich nicht im GAC befinden.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.

Kurzform: /r.Short Form: /r
/dataContractOnly/dataContractOnly Funktioniert nur bei Datenvertragstypen.Operates on data contract types only. Dienstverträge werden nicht verarbeitet.Service Contracts are not processed.

Sie sollten nur lokale Metadatendateien für diese Option angeben.You should only specify local metadata files for this option.

Kurzform: /dconly.Short Form: /dconly
/excludeType:<Typ >/excludeType:<type> Gibt einen vollqualifizierten oder assemblyqualifizierten Namen eines Typs an, der aus dem Export ausgeschlossen werden soll.Specifies the fully-qualified or assembly-qualified name of a type to be excluded from export. Diese Option kann beim Exportieren von Metadaten für einen Dienst oder einen Satz von Dienstverträgen verwendet werden, um Typen aus dem Export auszuschließen.This option can be used when exporting metadata for a service, or a set of service contracts to exclude types from being exported. Diese Option kann nicht zusammen mit der /dconly-Option verwendet werden.This option cannot be used together with the /dconly option.

Wenn Sie eine einzelne Assembly mit mehreren Diensten vorliegen haben und jede Assembly separate Klassen mit dem gleichen XSD-Namen verwendet, sollten Sie den Dienstnamen anstatt des XSD-Klassennamens für diesen Schalter angeben.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.

XSD- oder Datenvertragstypen werden nicht unterstützt.XSD or data contract types are not supported.

Kurzform: /et.Short Form: /et

DienstvalidierungService Validation

Die Validierung kann nicht zum Erkennen von Fehlern in Dienstimplementierungen verwendet werden, ohne den Dienst zu hosten.Validation can be used to detect errors in service implementations without hosting the service. Sie müssen die /serviceName-Option verwenden, um den zu überprüfenden Dienst anzugeben.You must use the /serviceName option to indicate the service you want to validate.

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

ArgumentArgument BeschreibungDescription
assemblyPath Gibt den Pfad zu einer Assembly an, die zu überprüfende Diensttypen enthält.Specifies the path to an assembly that contains service types to be validated. Die Assembly muss über eine zugeordnete Konfigurationsdatei verfügen, um die Dienstkonfiguration bereitzustellen.The assembly must have an associated configuration file to provide service configuration. Sie können standardmäßige Befehlszeilenplatzhalter verwenden, um mehrere Assemblys anzugeben.Standard command-line wildcards can be used to provide multiple assemblies.
OptionOption BeschreibungDescription
/validate/validate Überprüft eine durch die /serviceName-Option angegebene Dienstimplementierung.Validates a service implementation specified by the /serviceName option. Bei Verwendung dieser Option muss eine ausführbare Assembly mit einer zugeordneten Konfigurationsdatei als Eingabe übergeben werden.If this option is used, an executable assembly with an associated configuration file must be passed as input.

Kurzform: /v.Short Form: /v
/ ServiceName:<ServiceConfigName >/serviceName:<serviceConfigName> Gibt den Konfigurationsnamen eines zu überprüfenden Diensts an.Specifies the configuration name of a service to be validated. Svcutil.exe durchsucht alle zugeordneten Konfigurationsdateien aller Eingabeassemblys für die Dienstkonfiguration.Svcutil.exe searches all associated configuration files of all input assemblies for the service configuration. Wenn die Konfigurationsdateien Erweiterungstypen enthalten, müssen die Assemblys, die diese Typen enthalten, sich entweder im GAC befinden oder ausdrücklich durch die /reference-Option angegeben werden.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:<Dateipfad >/reference:<file path> Fügt die angegebene Assembly dem Satz von Assemblys hinzu, der zum Auflösen von Typverweisen verwendet wird.Adds the specified assembly to the set of assemblies used for resolving type references. Wenn Sie einen Dienst exportieren oder überprüfen, der in der Konfiguration registrierte Drittanbietererweiterungen verwendet (Verhalten, Bindungen und Bindungselemente), können Sie diese Option zum Suchen von Erweiterungsassemblys einsetzen, die sich nicht im GAC befinden.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.

Kurzform: /r.Short Form: /r
/dataContractOnly/dataContractOnly Funktioniert nur bei Datenvertragstypen.Operates on data contract types only. Dienstverträge werden nicht verarbeitet.Service Contracts are not processed.

Sie sollten nur lokale Metadatendateien für diese Option angeben.You should only specify local metadata files for this option.

Kurzform: /dconly.Short Form: /dconly
/excludeType:<Typ >/excludeType:<type> Gibt einen vollqualifizierten oder assemblyqualifizierten Namen eines Typs an, der aus der Validierung ausgeschlossen werden soll.Specifies the fully-qualified or assembly-qualified name of a type to be excluded from validation.

Kurzform: /et.Short Form: /et

MetadatendownloadMetadata Download

Svcutil.exe kann verwendet werden, um Metadaten aus ausführenden Diensten herunterzuladen und die Metadaten in lokalen Dateien zu speichern.Svcutil.exe can be used to download metadata from running services, and save the metadata to local files. Um Metadaten herunterzuladen, müssen Sie die /t:metadata-Option angeben.To download metadata, you must specify the /t:metadata option. Andernfalls wird Clientcode generiert.Otherwise, client code is generated. Bei HTTP- und HTTPS-URL-Schemas versucht Svcutil.exe, Metadaten mit WS-Metadata Exchange und DISCO abzurufen.For HTTP and HTTPS URL schemes, Svcutil.exe attempts to retrieve metadata using WS-Metadata Exchange and DISCO. Bei allen anderen URL-Schemas verwendet Svcutil.exe nur WS-Metadata Exchange.For all other URL schemes, Svcutil.exe only uses WS-Metadata Exchange.

Svcutil gibt die folgenden Metadatenanforderungen gleichzeitig aus, um Metadaten abzurufen.Svcutil issues the following metadata requests simultaneously to retrieve metadata.

  • MEX (WS-Transfer)-Anforderung an die angegebene AdresseMEX (WS-Transfer) request to the supplied address

  • MEX-Anforderung an die angegebene Adresse mit angefügtem /mexMEX request to the supplied address with /mex appended

  • DISCO-Anforderung (mit DiscoveryClientProtocol von ASMX) an die angegebene AdresseDISCO request (using the DiscoveryClientProtocol from ASMX) to the supplied address.

Standardmäßig verwendet Svcutil.exe die in der MetadataExchangeBindings-Klasse definierten Bindungen, um MEX-Anforderungen zu stellen.By default, Svcutil.exe uses the bindings defined in the MetadataExchangeBindings class to make MEX requests. Um die für WS-Metadata Exchange verwendete Bindung zu konfigurieren, müssen Sie einen Clientendpunkt in der Konfiguration definieren, der den IMetadataExchange-Vertrag verwendet.To configure the binding used for WS-Metadata Exchange, you must define a client endpoint in configuration that uses the IMetadataExchange contract. Dies kann entweder in der Konfigurationsdatei von Svcutil.exe oder in einer anderen Konfigurationsdatei, die mit der /svcutilConfig-Option angegeben wird, definiert werden.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 BeschreibungDescription
url Die URL zu einem Dienstendpunkt, der Metadaten bereitstellt, oder zu einem Metadatendokument, das online gehostet wird.The URL to a service endpoint that provides metadata or to a metadata document hosted online.
epr Der Pfad zu einer XML-Datei, die einen WS-Addressing-EndpointReference für einen Dienstendpunkt enthält, der WS-Metadata Exchange unterstützt.The path to an XML file that contains a WS-Addressing EndpointReference for a service endpoint that supports WS-Metadata Exchange.

XmlSerializer-TypgenerierungXmlSerializer Type Generation

Dienste und Clientanwendungen, die Datentypen verwenden, die mit dem XmlSerializer serialisiert werden können, generieren und kompilieren für diese Datentypen während der Laufzeit Code, was zu einem verlangsamten Start führen kann.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.

Hinweis

Vorab generierter Serialisierungscode kann nur in Clientanwendungen verwendet werden und nicht in Diensten.Pre-generated serialization code can only be used in client applications and not in services.

Svcutil.exe kann den erforderlichen C#-Serialisierungscode aus den kompilierten Assemblys für die Anwendung generieren, um damit die Startleistung für diese Anwendungen zu verbessern.Svcutil.exe can generate the necessary C# serialization code from the compiled assemblies for the application, thus improving start-up performance for these applications. Weitere Informationen finden Sie unter wie: Verbessern der Start Time des WCF-Clientanwendungen mit dem XmlSerializer.For more information, see How to: Improve the Startup Time of WCF Client Applications using the XmlSerializer.

Hinweis

Svcutil.exe generiert nur Code für Typen, die von Dienstverträgen, die in der Eingabeassemblys gefunden werden, verwendet werden.Svcutil.exe only generates code for types used by Service Contracts found in the input assemblies.

svcutil.exe /t:xmlSerializer <assemblyPath>*

ArgumentArgument BeschreibungDescription
assemblyPath Gibt den Pfad zu einer Assembly an, die Dienstvertragstypen enthält.Specifies the path to an assembly that contains service contract types. Serialisierungstypen werden für alle serialisierbaren XML-Typen in jedem Vertrag generiert.Serialization types are generated for all Xml Serializable types in each contract.
OptionOption BeschreibungDescription
/ reference:<Dateipfad >/reference:<file path> Fügt die angegebene Assembly dem Satz von Assemblys hinzu, der zum Auflösen von Typverweisen verwendet wird.Adds the specified assembly to the set of assemblies used for resolving type references.

Kurzform: /r.Short Form: /r
/excludeType:<Typ >/excludeType:<type> Gibt einen vollqualifizierten oder assemblyqualifizierten Namen eines Typs an, der aus dem Export oder der Validierung ausgeschlossen werden soll.Specifies the fully-qualified or assembly-qualified name of a type to be excluded from export or validation.

Kurzform: /et.Short Form: /et
/ out:<Datei >/out:<file> Gibt den Dateinamen für den generierten Code an.Specifies the filename for the generated code. Diese Option wird ignoriert, wenn mehrere Assemblys als Eingabe an das Tool übergeben werden.This option is ignored when multiple assemblies are passed as input to the tool.

Standard: Wird vom Assemblynamen abgeleitet.Default: Derived from the assembly name.

Kurzform: /o.Short Form: /o
/UseSerializerForFaults/UseSerializerForFaults Gibt an, dass die xref:System.Xml.XmlSerializer sollte verwendet werden, zum Lesen und Schreiben von Fehlern, anstelle des standardmäßigen DataContractSerializer.Specifies that the xref:System.Xml.XmlSerializer should be used for reading and writing faults, instead of the default DataContractSerializer.

BeispieleExamples

Der folgende Befehl generiert Clientcode von einem ausgeführten Dienst oder Onlinemetadatendokumenten.The following command generates client code from a running service or online metadata documents.

svcutil http://service/metadataEndpoint

Der folgende Befehl generiert Clientcode aus lokalen Metadatendokumenten.The following command generates client code from local metadata documents.

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

Der folgende Befehl generiert Datenvertragstypen in Visual Basic aus lokalen Schemadokumenten.The following command generates data contract types in Visual Basic from local schema documents.

svcutil /dconly *.xsd /language:VB

Der folgende Befehl lädt Metadatendokumente aus Diensten herunter, die zurzeit ausgeführt werden.The following command downloads metadata documents from running services.

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

Der folgende Befehl generiert Metadatendokumente für Dienstverträge und zugeordnete Typen in einer Assembly.The following command generates metadata documents for service contracts and associated types in an assembly.

svcutil myAssembly.dll

Der folgende Befehl generiert Metadatendokumente für einen Dienst und alle zugeordneten Dienstvertragstypen und Datentypen in einer 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

Der folgende Befehl generiert Metadatendokumente für Datentypen in einer Assembly.The following command generates metadata documents for data types in an assembly.

svcutil myServiceHost.exe /dconly

Der folgende Befehl überprüft Diensthosting.The following command verifies service hosting.

svcutil /validate /serviceName:myServiceName myServiceHost.exe

Der folgende Befehl generiert Serialisierungstypen für XmlSerializer-Typen, die von Dienstverträgen in der Assembly verwendet werden.The following command generates serialization types for XmlSerializer types used by any service contracts in the assembly.

svcutil /t:xmlserializer myContractLibrary.exe

Maximale Anzahl von Nametable-ZeichenMaximum Nametable Character Count Quota

Wenn Sie mithilfe von svcutil.exe" die Metadaten für einen Dienst generieren, wird ggf. folgende Meldung angezeigt:When using svcutil to generate metadata for a service, you may get the following message:

Fehler: Aus "http://localhost:8000/somesservice/mex" können keine Metadaten abgerufen werden. Die maximale Anzahl von Nametable-Zeichen (16384) wurde beim Lesen von XML-Daten überschritten.Error: Cannot obtain Metadata from http://localhost:8000/somesservice/mex The maximum nametable character count quota (16384) has been exceeded while reading XML data. Die Nametable ist eine Datenstruktur, in der bei der XML-Verarbeitung gefundene Zeichenfolgen gespeichert werden - lange XML-Dokumente mit sich nicht wiederholenden Elementnamen, Attributnamen und Attributwerten können zum Überschreiten dieses Kontingents führen.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. Dieses Kontingent kann durch Ändern der MaxNameTableCharCount-Eigenschaft des beim Erstellen des XML-Readers verwendeten XmlDictionaryReaderQuotas-Objekts erhöht werden.This quota may be increased by changing the MaxNameTableCharCount property on the XmlDictionaryReaderQuotas object used when creating the XML reader.

Dieser Fehler kann durch einen Dienst verursacht werden, der eine große WSDL-Datei zurückgibt, wenn Sie die Metadaten des Diensts anfordern.This error can be caused by a service that returns a large WSDL file when you request its metadata. Das Problem ist, dass das Zeichenkontingent für das Tool "svcutil.exe" überschritten wurde.The problem is that the character quota for the svcutil.exe tool is exceeded. Dieser Wert wird festgelegt, um DoS (Denial-of-Service)-Angriffe zu verhindern.This value is set to help prevent denial of service (dos) attacks. Sie können dieses Kontingent erhöhen, indem Sie die folgende Konfigurationsdatei für "svcutil.exe" angeben.You can increase this quota by specifying the following config file for svcutil.

Die folgende Konfigurationsdatei veranschaulicht, wie die Readerkontingente für "svcutil.exe" festgelegt werden.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>  

Erstellen Sie eine neue Datei namens "svcutil.exe.config", und kopieren Sie den XML-Beispielcode in diese Datei.Create a new file called svcutil.exe.config and copy the XML example code into it. Fügen Sie die Datei dann in das gleiche Verzeichnis wie "svcutil.exe" ein.Then place the file in the same directory as svcutil.exe. Bei der nächsten Ausführung von "svcutil.exe" werden die neuen Einstellungen abgerufen.The next time svcutil.exe is run it will pick up the new settings.

SicherheitsaspekteSecurity Concerns

Sie sollten die entsprechende Zugriffssteuerungsliste verwenden, um den Installationsordner von "Svcutil.exe", "Svcutil.config" und Dateien, auf die /svcutilConfig verweist, zu schützen.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. Dies kann verhindern, dass bösartige Erweiterungen registriert und ausgeführt werden.This can prevent malicious extensions from being registered and run.

Um außerdem weitere Sicherheitsgefahren auszuschließen, sollten Sie dem System nur vertrauenswürdige Erweiterungen hinzufügen und nur vertrauenswürdige Codeanbieter mit Svcutil.exe verwenden.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.

Und schließlich sollten Sie das Tool nicht in der mittleren Ebene Ihrer Anwendung einsetzen, da dies einen Denial-of-Service beim aktuellen Vorgang zur Folge haben kann.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.

Siehe auchSee Also

DataContractAttribute
DataMemberAttribute
Vorgehensweise: Erstellen eines ClientsHow to: Create a Client