このトピックでは、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 | 構成ファイルを生成しないでください。 |