サービス メタデータからの WCF クライアントの生成Generating a WCF Client from Service Metadata

ここでは、Svcutil.exe の各種のスイッチを使用して、メタデータ ドキュメントからクライアントを生成する方法を説明します。This topic describes how to use the various switches in Svcutil.exe to generate clients from metadata documents.

メタデータ ドキュメントは、永続ストレージに保存したり、オンラインで取得したりできます。Metadata documents can be on a durable storage or be retrieved online. オンライン取得では、WS-MetadataExchange プロトコルまたは DISCO (Microsoft Discovery) プロトコルに従います。Online retrieval follows either the WS-MetadataExchange protocol or the Microsoft Discovery (DISCO) protocol. Svcutil.exe は、メタデータを取得するために次のメタデータ要求を同時に発行します。Svcutil.exe issues the following metadata requests simultaneously to retrieve metadata:

  • 指定されたアドレスへの WS-MetadataExchange (MEX) 要求WS-MetadataExchange (MEX) request to the supplied address.

  • 指定された /mex 付きアドレスへの MEX 要求MEX request to the supplied address with /mex appended.

  • ASP.NET Web サービスからのを使用して、指定され DiscoveryClientProtocol たアドレスに DISCO 要求を行います。DISCO request (using the DiscoveryClientProtocol from ASP.NET Web services) to the supplied address.

Svcutil.exe は、Web サービス記述言語 (WSDL: Web Services Description Language) ファイル、またはサービスから受け取ったポリシー ファイルに基づいてクライアントを生成します。Svcutil.exe generates the client based on the Web Services Description Language (WSDL) or policy file received from the service. ユーザープリンシパル名 (UPN) は、ユーザー名と "" を連結し、 @ 完全修飾ドメイン名 (FQDN) を追加することによって生成されます。The user principal name (UPN) is generated by concatenating the user name with "@" and then adding a fully-qualified domain name (FQDN). ただし、Active Directory に登録したユーザーについては、この形式は無効であり、ツールが生成する UPN によって Kerberos 認証でエラーが発生し、次のエラーメッセージが表示されます。ログオン試行が失敗しました。However, for users who registered on Active Directory, this format is not valid and the UPN that the tool generates causes a failure in the Kerberos authentication with the following error message: The logon attempt failed. この問題を解決するには、このツールが生成するクライアント ファイルを手動で修正する必要があります。To resolve this problem, manually fix the client file that the tool generated.

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

型の参照と共有Referencing and Sharing Types

オプションOption 説明Description
/reference<file path>/reference:<file path> 指定されたアセンブリの型を参照します。References types in the specified assembly. クライアントの生成時に、このオプションを使用して、インポートするメタデータを表す型を含むアセンブリを指定します。When generating clients, use this option to specify assemblies that might contain types that represent the metadata being imported.

短縮形 : /rShort form: /r
/excludetype:<type>/excludeType:<type> 参照されるコントラクト型から除外する完全修飾またはアセンブリ修飾の型名を指定します。Specifies a fully-qualified or assembly-qualified type name to be excluded from referenced contract types.

短縮形 : /etShort form: /et

シリアライザーの選択Choosing a Serializer

オプションOption 説明Description
/serializer:Auto/serializer:Auto シリアライザーを自動的に選択します。Automatically selects the serializer. これは、DataContract シリアライザーを使用します。This uses the DataContract serializer. この処理が失敗すると、XmlSerializer が使用されます。If this fails, the XmlSerializer is used.

短縮形: /ser:AutoShort Form: /ser:Auto
/serializer:DataContractSerializer/serializer:DataContractSerializer シリアル化と逆シリアル化に DataContract シリアライザーを使用するデータ型を生成します。Generates data types that use the DataContract serializer for serialization and deserialization.

短縮形 : /ser:DataContractSerializerShort form: /ser:DataContractSerializer
/serializer:XmlSerializer/serializer:XmlSerializer シリアル化と逆シリアル化に XmlSerializer を使用するデータ型を生成します。Generates data types that use the XmlSerializer for serialization and deserialization.

短縮形 : /ser:XmlSerializerShort form: /ser:XmlSerializer
/importXmlTypes/importXmlTypes DataContract 型として非 DataContract 型をインポートする IXmlSerializable シリアライザーを構成します。Configures the DataContract serializer to import non-DataContract types as IXmlSerializable types.

短縮形 : /ixtShort form: /ixt
/dataContractOnly/dataContractOnly DataContract 型に対してのみコードを生成します。Generates code for DataContract types only. ServiceContract 型が生成されます。ServiceContract types are generated.

このオプションにはローカル メタデータ ファイルだけを指定する必要があります。You should specify only local metadata files for this option.

短縮形 : /dconlyShort form: /dconly

クライアントの言語の選択Choosing a Language for the Client

オプションOption 説明Description
/language<language>/language:<language> コード生成に使用するプログラミング言語を指定します。Specifies the programming language to use for code generation. Machine.config ファイルに登録された言語名か、CodeDomProvider から継承するクラスの完全修飾名のいずれかを指定します。Provide either a language name registered in the Machine.config file or the fully-qualified name of a class that inherits from CodeDomProvider.

値は、c#、cs、csharp、vb、vbs、visualbasic、vbscript、javascript、c++、mc、cpp になります。Values: c#, cs, csharp, vb, vbs, visualbasic, vbscript, javascript, c++, mc, cpp

既定値: csharpDefault: csharp

短縮形 : /lShort form: /l

詳細については、CodeDomProvider クラスを参照してください。For more information, see CodeDomProvider class.

クライアントの名前空間の選択Choosing a Namespace for the Client

オプションOption 説明Description
/namespace<string,string>/namespace:<string,string> WSDL または XML スキーマの targetNamespace から共通言語ランタイム (CLR: Common Language Runtime) 名前空間へのマッピングを指定します。Specifies a mapping from a WSDL or XML Schema targetNamespace to a common language runtime (CLR) namespace. targetNamespace にワイルドカード (*) を使用すると、マッピングを明示的に指定せずにすべての targetNamespaces がその CLR 名前空間にマップされます。Using a wildcard (*) for the targetNamespace maps all targetNamespaces without an explicit mapping to that CLR namespace.

メッセージ コントラクト名が操作名と競合しないようにするには、型参照を 2 つのコロン :: で修飾するか、名前を一意にします。To make sure that the message contract name does not collide with the operation name, either qualify the type reference with double colons (::) or make sure the names are unique.

既定 : DataContracts のスキーマ ドキュメントのターゲット名前空間から派生します。Default: Derived from the target namespace of the schema document for DataContracts. 既定の名前空間は、生成される他のすべての型に使用されます。The default namespace is used for all other generated types.

短縮形 : /nShort form: /n

データ バインディングの選択Choosing a Data Binding

オプションOption 説明Description
/enableDataBinding/enableDataBinding データ バインディングを有効にするために、すべての INotifyPropertyChanged 型に DataContract インターフェイスを実装します。Implements the INotifyPropertyChanged interface on all DataContract types to enable data binding.

短縮形 : /edbShort form: /edb

構成ファイルの生成Generating Configuration

オプションOption 説明Description
/config<configFile>/config:<configFile> 生成される構成ファイルの名前を指定します。Specifies the file name for the generated configuration file.

既定値: output.configDefault: output.config
/mergeConfig/mergeConfig 既存のファイルを上書きする代わりに、生成される構成ファイルを既存のファイルにマージします。Merges the generated configuration into an existing file, instead of overwriting the existing file.
/noConfig/noConfig 構成ファイルを生成しません。Do not generate configuration files.

関連項目See also