次の方法で共有


サービス メタデータからの WCF クライアントの生成

このトピックでは、Svcutil.exe のさまざまなスイッチを使用して、メタデータ ドキュメントからクライアントを生成する方法について説明します。

メタデータ ドキュメントは、永続的なストレージ上にあるか、オンラインで取得できます。 オンライン取得は、WS-MetadataExchange プロトコルまたは Microsoft Discovery (DISCO) プロトコルのいずれかに従います。 Svcutil.exe メタデータを取得するために、次のメタデータ要求を同時に発行します。

  • 指定されたアドレスに WS-MetadataExchange (MEX) 要求を送信してください。

  • /mexが追加された指定されたアドレスへの MEX 要求。

  • 指定されたアドレスへの DISCO 要求 (ASP.NET Web サービスからの DiscoveryClientProtocol を使用)。

Svcutil.exe は、サービスから受信した Web サービス記述言語 (WSDL) またはポリシー ファイルに基づいてクライアントを生成します。 ユーザー プリンシパル名 (UPN) は、ユーザー名を "@" と連結し、完全修飾ドメイン名 (FQDN) を追加することによって生成されます。 ただし、Active Directory に登録したユーザーの場合、この形式は有効ではなく、ツールによって生成される UPN によって Kerberos 認証でエラーが発生し、次のエラー メッセージが表示 されます。ログオンの試行は失敗しました。 この問題を解決するには、ツールによって生成されたクライアント ファイルを手動で修正します。

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

型の参照と共有

選択肢 説明
/reference:<ファイルパス> 指定したアセンブリ内の型を参照します。 クライアントを生成するときは、このオプションを使用して、インポートするメタデータを表す型を含むアセンブリを指定します。

短い形式: /r
/excludeType:<type> 参照されるコントラクト型から除外する完全修飾またはアセンブリ修飾の型名を指定します。

短い形式: /et

シリアライザーの選択

選択肢 説明
/serializer:Auto シリアライザーを自動的に選択します。 これにより、 DataContract シリアライザーが使用されます。 これが失敗した場合は、 XmlSerializer が使用されます。

短い形式: /ser:Auto
/serializer:DataContractSerializer シリアル化と逆シリアル化に DataContract シリアライザーを使用するデータ型を生成します。

短い形式: /ser:DataContractSerializer
/serializer:XmlSerializer シリアル化と逆シリアル化に XmlSerializer を使用するデータ型を生成します。

短い形式: /ser:XmlSerializer
/importXmlTypes DataContract以外の型をDataContract型としてインポートするように、IXmlSerializable シリアライザーを構成します。

短い形式: /ixt
/dataContractOnly DataContract型のみのコードを生成します。 ServiceContract 型が生成されます。

このオプションにはローカル メタデータ ファイルのみを指定する必要があります。

短い形式: /dconly

クライアントの言語の選択

選択肢 説明
/language:<言語> コード生成に使用するプログラミング言語を指定します。 Machine.config ファイルに登録されている言語名、または CodeDomProviderから継承するクラスの完全修飾名を指定します。

値: c#、cs、csharp、vb、vbs、visualbasic、vbscript、javascript、c++、mc、cpp

既定値: csharp

短い形式: /l

詳細については、クラス CodeDomProvider 参照してください。

クライアントの名前空間の選択

選択肢 説明
/namespace:<string,string> WSDL または XML スキーマ targetNamespace から共通言語ランタイム (CLR) 名前空間へのマッピングを指定します。 targetNamespaceにワイルドカード (*) を使用すると、その CLR 名前空間に明示的にマッピングされていないすべてのtargetNamespacesがマップされます。

メッセージ コントラクト名が操作名と競合しないようにするには、型参照を二重コロン (::) で修飾するか、名前が一意であることを確認します。

既定値: DataContractsのスキーマ ドキュメントのターゲット名前空間から派生します。 既定の名前空間は、他のすべての生成された型に使用されます。

短い形式: /n

データ バインディングの選択

選択肢 説明
/enableDataBinding データ バインディングを有効にするために、すべてのINotifyPropertyChanged型にDataContract インターフェイスを実装します。

短い形式: /edb

構成ファイルの生成

選択肢 説明
/config:<configFile> 生成された構成ファイルのファイル名を指定します。

既定値: output.config
/mergeConfig 既存のファイルを上書きするのではなく、生成された構成を既存のファイルにマージします。
/noConfig 構成ファイルを生成しないでください。

こちらも参照ください