ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe)ServiceModel Metadata Utility Tool (Svcutil.exe)

ServiceModel メタデータ ユーティリティ ツールは、メタデータ ドキュメント、およびサービス モデル コードからメタデータ ドキュメントからサービス モデル コードの生成に使用されます。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

ServiceModel メタデータ ユーティリティ ツールを具体的には、Windows SDK のインストール場所で見つかんだできます %ProgramFiles%\Microsoft SDKs\Windows\v6.0\Binします。The ServiceModel Metadata Utility Tool can be found at the Windows SDK installation location, specifically %ProgramFiles%\Microsoft SDKs\Windows\v6.0\Bin.

機能Functionalities

次の表は、このツールは、およびその使用方法について説明している対応するトピックによって提供されるさまざまな機能をまとめたものです。The following table summarizes the various functionalities provided by this tool, and the corresponding topic that discusses how it is used:

タスクTask トピックTopic
実行中のサービスまたは静的なメタデータ ドキュメントからコードを生成します。Generates code from running services or static metadata documents. サービス メタデータからの WCF クライアントの生成Generating a WCF Client from Service Metadata
コンパイル済みのコードからメタデータ ドキュメントをエクスポートします。Exports metadata documents from compiled code. 方法: Svcutil.exe を使用して、コンパイル済みサービス コードからメタデータをエクスポートするにはHow to: Use Svcutil.exe to Export Metadata from Compiled Service Code
コンパイル済みサービス コードを検証します。Validates compiled service code. 方法: Svcutil.exe を使用して、コンパイル済みサービス コードを検証するにはHow to: Use Svcutil.exe to Validate Compiled Service Code
実行中のサービスからメタデータ ドキュメントをダウンロードします。Downloads metadata documents from running services. 方法: Svcutil.exe を使用してメタデータ ドキュメントをダウンロードするにはHow to: Use Svcutil.exe to Download Metadata Documents
シリアル化コードを生成します。Generates serialization code. 方法: アプリケーション起動時間の WCF クライアント、XmlSerializer を使用して向上させるHow to: Improve the Startup Time of WCF Client Applications using the XmlSerializer

注意事項

パラメーターとして指定された名前が同じ場合、Svcutil はディスク上の既存のファイルを上書きします。Svcutil overwrites existing files on a disk if the names supplied as parameters are identical. これには、コード ファイル、構成、またはメタデータ ファイルを含めることができます。This can include code files, configuration, or metadata files. これを避けるため、コードと構成ファイルを生成するときに、使用、/mergeConfigスイッチします。To avoid this when generating code and configuration files, use the /mergeConfig switch.

さらに、/r/ct型を参照するためのスイッチは、データ コントラクトを生成するためです。In addition, the /r and /ct switches for referencing types are for generating data contracts. XmlSerializer の使用時には、これらのスイッチは機能しません。These switches do not work when using XmlSerializer.

TimeoutTimeout

ツールは、メタデータを取得するときに、5 分のタイムアウトが。The tool has a five minute timeout when retrieving metadata. このタイムアウトは、ネットワーク経由でメタデータを取得する場合にのみ適用されます。This timeout only applies to retrieving metadata over the network. タイムアウトは、そのメタデータの処理には適用されません。It does not apply to any processing of that metadata.

マルチターゲットMulti-targeting

このツールは複数バージョン対応機能をサポートしていません。The tool does not support multi-targeting. .NET 4 成果物を生成するsvcutil.exeを使用して、 svcutil.exe .NET 4 SDK から。If you want to generate a .NET 4 artifact from svcutil.exe, use the svcutil.exe from the .NET 4 SDK. .NET 3.5 成果物を生成するには、.NET 3.5 SDK から実行可能ファイルを実行します。To generate a .NET 3.5 artifact, use the executable from the .NET 3.5 SDK.

WSDL ドキュメントへのアクセスAccessing WSDL Documents

Svcutil を使用して、セキュリティ トークン サービス (STS) への参照がある WSDL ドキュメントにアクセスする場合、Svcutil は WS-MetadataExchange を使用して 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. ただし、サービスは、WS-MetadataExchange または HTTP GET を使用して WSDL ドキュメントを公開できます。However, the service can expose its WSDL documents using either WS-MetadataExchange or HTTP GET. そのため、STS が HTTP GET を使用して WSDL ドキュメントを公開してのみ、WinFX で作成されたクライアントは失敗します。Therefore, if the STS has only exposed the WSDL document using HTTP GET, a client written in WinFX will fail. 記述されたクライアントの.NET Framework 3.5.NET Framework 3.5Svcutil が Ws-metadataexchange 両方を使用しようし、HTTP の GET、STS WSDL を取得します。For clients written in .NET Framework 3.5.NET Framework 3.5, Svcutil attempts to use both WS-MetadataExchange and HTTP GET to obtain the STS WSDL.

SvcUtil.exe の使用Using SvcUtil.exe

一般的な使用Common Usages

次の表は、一部よくこのツールのオプションを使用します。The following table shows some commonly used options for this tool:

オプションOption 説明Description
/directory:<directory>/directory:<directory> ファイルを作成するためのディレクトリ。Directory to create files in.

既定:現在のフォルダー。Default: The current directory.

短縮形 : /dShort form: /d
/help/help このツールのコマンド構文とオプションを表示します。Displays the command syntax and options for the tool.

短縮形 : /?Short form: /?
/noLogo/noLogo 著作権やバナー メッセージを表示しません。Suppress the copyright and banner message.
/svcutilConfig:<configFile>/svcutilConfig:<configFile> App.config ファイルの代わりに使用するカスタム構成ファイルを指定します。Specifies a custom configuration file to use instead of the App.config file. これは、ツールの構成ファイルを変更せずに system.serviceModel 拡張を登録するために使用できます。This can be used to register system.serviceModel extensions without altering the tool's configuration file.
/target:<output type>/target:<output type> ツールによって生成される出力を指定します。Specifies the output to be generated by the tool.

有効な値は、コード、メタデータ、または xmlSerializer です。Valid values are code, metadata or xmlSerializer.

短縮形 : /tShort form: /t

コード生成Code Generation

Svcutil.exe は、メタデータ ドキュメントからサービス コントラクト、クライアント、およびデータ型のコードを生成できます。Svcutil.exe can generate code for service contracts, clients and data types from metadata documents. これらのメタデータ ドキュメントは、永続ストレージにあるか、オンラインで取得できます。These metadata documents can be on a durable storage, or be retrieved online. オンライン取得は、WS-Metadata Exchange プロトコルまたは DISCO プロトコルに従います (詳細については、「メタデータのダウンロード」セクションを参照してください)。Online retrieval follows either the WS-Metadata Exchange protocol or the DISCO protocol (for details see the Metadata Download section).

使用することができます、 SvcUtil.exe定義済みの WSDL ドキュメントに基づいてサービスとデータ コントラクトを生成するツール。You can use the SvcUtil.exe tool to generate service and data contracts based on a predefined WSDL document. /serviceContract スイッチを使用し、WSDL ドキュメントをダウンロードできるか見つけることができる URL またはファイルの場所を指定します。Use the /serviceContract switch and specify a URL or file location where the WSDL document can be downloaded or found. これには、準拠サービスを実装するために使用する WSDL ドキュメントで定義されているサービスとデータ コントラクトが生成されます。This generates the service and data contracts defined in the WSDL document that can then be used to implement a complaint service. 詳細については、「方法 :メタデータの取得および準拠サービスの実装します。For more information, see How to: Retrieve Metadata and Implement a Compliant Service.

BasicHttpContextBinding エンドポイントとサービスのSvcutil.exeとの BasicHttpBinding を生成、allowCookies属性に設定true代わりにします。For a service with a BasicHttpContextBinding endpoint, Svcutil.exe generates a BasicHttpBinding with the allowCookies attribute set to true instead. クッキーはサーバー側でのコンテキスト用に使用されます。The cookies are used for context on the server. サービスでクッキーを使用するときにクライアント側でコンテキストを管理する場合は、コンテキスト バインディングを使用するように構成を手動で変更できます。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.

注意事項

Svcutil.exe は、WSDL またはサービスから受け取るポリシー ファイルに基づいてクライアントを生成します。Svcutil.exe generates the client based on the WSDL or policy file received from the service. ユーザー プリンシパル名 (UPN) が、ユーザー名を連結して生成された"@"と完全修飾ドメイン名 (FQDN)。The user principal name (UPN) is generated by concatenating username, "@" and 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 generated by the tool causes a failure in Kerberos authentication with the error message "The logon attempt failed". この問題を解決するには、このツールが生成するクライアント ファイルを手動で修正する必要があります。To resolve this problem, you should manually fix the client file generated by this tool.

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

引数Argument 説明Description
epr WS-Metadata Exchange をサポートするサービス エンドポイントの WS-Addressing EndpointReference を含む XML ファイルへのパスです。The path to an XML file that contains a WS-Addressing EndpointReference for a service endpoint that supports WS-Metadata Exchange. 詳細については、「メタデータのダウンロード」セクションを参照してください。For more information, see the Metadata Download section.
metadataDocumentPath メタデータ ドキュメントへのパス (wsdlまたはxsd) コード (.wsdl、.xsd、.wspolicy、または .wsmex) にインポートするコントラクトを格納しています。The path to a metadata document (wsdl or xsd) that contains the contract to import into code (.wsdl, .xsd, .wspolicy, or .wsmex).

Svcutil は、メタデータにリモート URL を指定するときのインポートとインクルードに従います。Svcutil follows imports and includes when you specify a remote URL for metadata. ただし、ローカル ファイル システムでメタデータ ファイルを処理する場合は、この引数にすべてのファイルを指定する必要があります。However, if you want to process metadata files on the local file system, you must specify all files in this argument. この方法では Svcutil を、ネットワークの依存関係を持つことができないビルド環境で使用できます。In this way, you can use Svcutil in a build environment where you cannot have network dependencies. ワイルドカードを使用することができます (*.xsd、 *.wsdl) この引数にします。You can use wildcards (*.xsd, *.wsdl) for this argument.
url メタデータを提供するサービス エンドポイントの URL またはオンラインになっているメタデータ ドキュメントの URL。The URL to a service endpoint that provides metadata or to a metadata document hosted online. これらのドキュメントの取得方法の詳細については、「メタデータのダウンロード」セクションを参照してください。For more information on how these documents are retrieved, see the Metadata Download section.
オプションOption 説明Description
/async/async 同期と非同期の両方のメソッド署名を生成します。Generates both synchronous and asynchronous method signatures.

既定 : 同期メソッド署名のみを生成します。Default: generate only synchronous method signatures.

短縮形: /aShort Form: /a
/collectionType:<type>/collectionType:<type> WCF クライアントのリスト コレクション型を指定します。Specifies the list collection type for a WCF client.

既定値: コレクション型は、System.Array です。Default: collection type is System.Array.

短縮形: /ctShort Form: /ct
/config:<configFile>/config:<configFile> 生成される構成ファイルの名前を指定します。Specifies the filename for the generated configuration file.

既定値: output.configDefault: output.config
/dataContractOnly/dataContractOnly データ コントラクト型に対してのみコードを生成します。Generates code for data contract types only. サービス コントラクト型は生成されません。Service Contract types are not generated.

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

短縮形: /dconlyShort Form: /dconly
/enableDataBinding/enableDataBinding データ バインディングを有効にするために、すべてのデータ コントラクト型に INotifyPropertyChanged インターフェイスを実装します。Implements the INotifyPropertyChanged interface on all Data Contract types to enable data binding.

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

このスイッチを個別の DLL から /r と共に使用する場合は、XSD クラスの完全名を参照します。When using this switch together with /r from separate DLLs, the full name of the XSD class is referenced.

短縮形: /etShort Form: /et
/importXmlTypes/importXmlTypes 非データ コントラクト型を IXmlSerializable 型としてインポートするようにデータ コントラクト シリアライザーを構成します。Configures the Data Contract serializer to import non-Data Contract types as IXmlSerializable types.
/internal/internal 内部としてマークされるクラスを生成します。Generates classes that are marked as internal. 既定 : パブリック クラスのみを生成します。Default: generate public classes only.

短縮形: /iShort Form: /i
/language:<language>/language:<language> コード生成に使用するプログラミング言語を指定します。Specifies the programming language to use for code generation. Machine.config ファイルに登録された言語名または継承するクラスの完全修飾名を指定する必要があります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.

値 : C#、cs、csharp、vb、visualbasic、c++、cppValues: c#, cs, csharp, vb, visualbasic, c++, cpp

既定値: csharpDefault: csharp

短縮形 : /lShort form: /l
/mergeConfig/mergeConfig 既存のファイルを上書きする代わりに、生成される構成ファイルを既存のファイルにマージします。Merges the generated configuration into an existing file, instead of overwriting the existing file.
/messageContract/messageContract メッセージ コントラクト型を生成します。Generates Message Contract types.

短縮形: /mcShort Form: /mc
/namespace:<string,string>/namespace:<string,string> WSDL または XML スキーマの targetNamespace から CLR 名前空間へのマッピングを指定します。Specifies a mapping from a WSDL or XML Schema targetNamespace to a CLR namespace. 使用して '*' の targetNamespace には、その CLR 名前空間に、明示的なマッピングがないすべての targetNamespaces がマップされます。Using '*' for the targetNamespace maps all targetNamespaces without an explicit mapping to that CLR namespace.

メッセージ コントラクト名が操作名と競合しないようにするには、型参照を :: で修飾するか、名前を一意にする必要があります。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.

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

短縮形:/n 注: XmlSerializer を使用する型を生成する場合は、単一の名前空間のマッピングのみがサポートされます。Short Form: /n Note: When generating types to use with XmlSerializer, only a single namespace mapping is supported. 生成されたすべての型が既定の名前空間またはで指定された名前空間に存在するか、' *'。All generated types will either be in the default namespace or the namespace specified by '*'.
/noConfig/noConfig 構成ファイルを生成しません。Do not generate configuration files.
/noStdLib/noStdLib 標準ライブラリを参照しません。Do not reference standard libraries.

既定:Mscorlib.dll と System.servicemodel.dll が参照されます。Default: Mscorlib.dll and System.servicemodel.dll are referenced.
/out:<file>/out:<file> 生成されるコードのファイル名を指定します。Specifies the file name for the generated code.

既定:WSDL は、WSDL 定義名から派生した、サービス名またはスキーマのいずれかのターゲット名前空間。Default: Derived from the WSDL definition name, WSDL service name or target namespace of one of the schemas.

短縮形 : /oShort form: /o
/reference:<ファイルのパス >/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.

このスイッチを使用して、メッセージ コントラクト型と XmlSerializer 型は指定できません。You cannot specify message contracts and XmlSerializer types using this switch.

DateTimeOffset が参照されている場合、新しい型を生成する代わりにこの型が使用されます。If DateTimeOffset referenced, this type is used instead of generating a new type. アプリケーションが .NET Framework 3.5.NET Framework 3.5 を使用して記述されている場合、SvcUtil.exe は、自動的に DateTimeOffset を参照します。If the application is written using .NET Framework 3.5.NET Framework 3.5, SvcUtil.exe references DateTimeOffset automatically.

短縮形: /rShort Form: /r
/serializable/serializable シリアル化可能属性でマークされたクラスを生成します。Generates classes marked with the Serializable Attribute.

短縮形: /sShort Form: /s
/serviceContract/serviceContract サービス コントラクトのコードのみを生成します。Generate code for service contracts only. クライアント クラスと構成は生成されません。Client class and configuration will not be generated

短縮形: /scShort Form: /sc
/serializer:Auto/serializer:Auto シリアライザーが自動的に選択します。Automatically select the serializer. これは、データ コントラクト シリアライザーを使用しようとしが失敗した場合に、XmlSerializer を使用します。This tries to use the Data Contract serializer and uses the XmlSerializer if that fails.

短縮形: /serShort Form: /ser
/serializer:DataContractSerializer/serializer:DataContractSerializer シリアル化と逆シリアル化にデータ コントラクト シリアライザーを使用するデータ型を生成します。Generates data types that use the Data Contract 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
/targetClientVersion/targetClientVersion アプリケーションが対象とする .NET Framework のバージョンを指定します。Specify which version of .NET Framework the application is targeting. 有効値は Version30 または Version35 です。Valid values are Version30 and Version35. 既定値は Version30 です。The default value is Version30.

短縮形: /tcvShort Form: /tcv

Version30:使用して、 /tcv:Version30 WinFX を使用するクライアントのコードを生成している場合。Version30: Use /tcv:Version30 if you are generating code for clients that use WinFX.

Version35:使用して、/tcv:Version35を使用するクライアントのコードを生成している場合.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. /tcv:Version35 スイッチを指定して /async を使用している場合は、イベントベースおよびコールバック/デリゲートベースの非同期メソッドが生成されます。When using /tcv:Version35 with the /async switch, both event-based and callback/delegate-based asynchronous methods are generated. また、LINQ 対応のデータセットおよび DateTimeOffset のサポートが有効になっています。In addition, support for LINQ-enabled DataSets and DateTimeOffset is enabled.
/wrapped/wrapped ラップされたパラメーターを含んでいるドキュメント リテラル スタイルのドキュメントに特別な大文字と小文字の規則が使用されるかどうかを制御します。Controls whether special-casing is used for document-literal styled documents with wrapped parameters. 使用して、ラップ/ スイッチと、サービス モデル メタデータ ユーティリティ ツール (Svcutil.exe)通常大文字小文字の区別を指定するためのツール。Use the /wrapped switch with the Service Model Metadata Utility Tool (Svcutil.exe) tool to specify normal casing.

注意

サービス バインドが、システム指定のバインディングのいずれかであるとき (システム指定のバインディング を参照してください)、および ProtectionLevel プロパティに None または Sign が設定されているときに、Svcutil は期待されるシステム指定の要素の代わりに <customBinding> 要素を使用して構成ファイルを生成します。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. たとえば、サービスが ProtectionLevelSign が設定された <wsHttpBinding> 要素を使用する場合、生成される構成のバインディング セクションには <wsHttpBinding> の代わりに <customBinding> を持ちます。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>. 保護レベルのさらに詳しい情報については 保護レベルの理解 を参照してください。For more information about the protection level, see Understanding Protection Level.

メタデータのエクスポートMetadata Export

Svcutil.exe は、コンパイル済みアセンブリのサービス、コントラクト、およびデータ型のメタデータをエクスポートできます。Svcutil.exe can export metadata for services, contracts and data types in compiled assemblies. サービスのメタデータをエクスポートするには、/serviceName オプションを使用して、エクスポートするサービスを指定する必要があります。To export metadata for a service, you must use the /serviceName option to specify the service you would like to export. アセンブリ内のすべてのデータ コントラクト型をエクスポートするには、/dataContractOnly オプションを使用する必要があります。To export all data contract types within an assembly, you should use the /dataContractOnly option. 既定では、入力アセンブリのすべてのサービス コントラクトのメタデータがエクスポートされます。By default, metadata is exported for all service contracts in the input assemblies.

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

引数Argument 説明Description
assemblyPath エクスポートされるサービス、コントラクト、またはデータ コントラクト型を格納するアセンブリへのパスを指定します。Specifies the path to an assembly that contains services, contracts or data contract types to be exported. 標準のコマンド ライン ワイルドカードを使用して、複数のファイルを入力として指定できます。Standard command line wildcards can be used to provide multiple files as input.
オプションOption 説明Description
/serviceName:<serviceConfigName>/serviceName:<serviceConfigName> エクスポートされるサービスの構成名を指定します。Specifies the configuration name of a service to be exported. このオプションを使用した場合、関連構成ファイルが存在する実行可能アセンブリを入力として渡す必要があります。If this option is used, an executable assembly with an associated configuration file must be passed as input. Svcutil.exe は、すべての関連構成ファイルからサービス構成を検索します。Svcutil.exe searches all associated configuration files for the service configuration. 構成ファイルが拡張型を含む場合、これらの型を含むアセンブリは GAC に存在するか、/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:<ファイルのパス >/reference:<file path> 指定したアセンブリを、型参照の解決に使用するアセンブリの集合に追加します。Adds the specified assembly to the set of assemblies used for resolving type references. サービスのエクスポートまたは検証に、構成に登録されているサードパーティ製拡張機能 (Behaviors、Bindings、および BindingElements) を使用している場合は、このオプションを使用して 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.

短縮形: /rShort Form: /r
/dataContractOnly/dataContractOnly データ コントラクト型に対してのみ機能します。Operates on data contract types only. サービス コントラクトは処理されません。Service Contracts are not processed.

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

短縮形: /dconlyShort Form: /dconly
/excludeType:<type>/excludeType:<type> エクスポートから除外する完全修飾またはアセンブリ修飾の型名を指定します。Specifies the fully-qualified or assembly-qualified name of a type to be excluded from export. このオプションは、エクスポートから型を除外するために、サービスのメタデータまたはサービス コントラクトのセットをエクスポートするときに使用できます。This option can be used when exporting metadata for a service, or a set of service contracts to exclude types from being exported. このオプションは /dconly オプションとは併用できません。This option cannot be used together with the /dconly option.

複数のサービスを含む単一のアセンブリが存在し、それぞれのサービスが同じ XSD 名の別のクラスを使用している場合は、このスイッチに XSD クラス名の代わりにサービス名を指定する必要があります。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 またはデータ コントラクト型はサポートされていません。XSD or data contract types are not supported.

短縮形: /etShort Form: /et

サービスの検証Service Validation

検証は、サービスをホストせずにサービス実装でエラーを検出するために使用できます。Validation can be used to detect errors in service implementations without hosting the service. /serviceName オプションを使用して、検証するサービスを指定する必要があります。You must use the /serviceName option to indicate the service you want to validate.

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

引数Argument 説明Description
assemblyPath 検証するサービス型を格納するアセンブリへのパスを指定します。Specifies the path to an assembly that contains service types to be validated. アセンブリに、サービス構成を提供する関連構成ファイルが存在している必要があります。The assembly must have an associated configuration file to provide service configuration. 標準のコマンド ライン ワイルドカードを使用して、複数のアセンブリを指定できます。Standard command-line wildcards can be used to provide multiple assemblies.
オプションOption 説明Description
/validate/validate /serviceName オプションによって指定されたサービス実装を検証します。Validates a service implementation specified by the /serviceName option. このオプションを使用した場合、関連構成ファイルが存在する実行可能アセンブリを入力として渡す必要があります。If this option is used, an executable assembly with an associated configuration file must be passed as input.

短縮形: /vShort Form: /v
/serviceName:<serviceConfigName>/serviceName:<serviceConfigName> 検証するサービスの構成名を指定します。Specifies the configuration name of a service to be validated. Svcutil.exe は、すべての入力アセンブリのすべての関連構成ファイルからサービス構成を検索します。Svcutil.exe searches all associated configuration files of all input assemblies for the service configuration. 構成ファイルが拡張型を含む場合、これらの型を含むアセンブリは GAC に存在するか、/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:<ファイルのパス >/reference:<file path> 指定したアセンブリを、型参照の解決に使用するアセンブリの集合に追加します。Adds the specified assembly to the set of assemblies used for resolving type references. サービスのエクスポートまたは検証に、構成に登録されているサードパーティ製拡張機能 (Behaviors、Bindings、および BindingElements) を使用している場合は、このオプションを使用して 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.

短縮形: /rShort Form: /r
/dataContractOnly/dataContractOnly データ コントラクト型に対してのみ機能します。Operates on data contract types only. サービス コントラクトは処理されません。Service Contracts are not processed.

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

短縮形: /dconlyShort Form: /dconly
/excludeType:<type>/excludeType:<type> 検証から除外する完全修飾のまたはアセンブリ修飾の型名を指定します。Specifies the fully-qualified or assembly-qualified name of a type to be excluded from validation.

短縮形: /etShort Form: /et

メタデータのダウンロードMetadata Download

Svcutil.exe を使用すると、実行中のサービスからメタデータをダウンロードして、ローカル ファイルに保存できます。Svcutil.exe can be used to download metadata from running services, and save the metadata to local files. メタデータをダウンロードするには、/t:metadata オプションを指定する必要があります。To download metadata, you must specify the /t:metadata option. それ以外の場合は、クライアント コードが生成されます。Otherwise, client code is generated. URL スキームが HTTP および HTTPS の場合、Svcutil.exe はメタデータの抽出に WS-Metadata Exchange および DISCO を使用します。For HTTP and HTTPS URL schemes, Svcutil.exe attempts to retrieve metadata using WS-Metadata Exchange and DISCO. その他の URL スキームの場合、Svcutil.exe は WS-Metadata Exchange のみを使用します。For all other URL schemes, Svcutil.exe only uses WS-Metadata Exchange.

Svcutil は、メタデータを取得するために次のメタデータ要求を同時に発行します。Svcutil issues the following metadata requests simultaneously to retrieve metadata.

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

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

  • 指定されたアドレスへの (ASMX から DiscoveryClientProtocol を使用した) DISCO 要求DISCO request (using the DiscoveryClientProtocol from ASMX) to the supplied address.

既定では、Svcutil.exe は MetadataExchangeBindings クラスに定義されているバインディングを使用して、MEX 要求を行います。By default, Svcutil.exe uses the bindings defined in the MetadataExchangeBindings class to make MEX requests. WS-Metadata Exchange で使用するバインディングを構成するには、IMetadataExchange コントラクトを使用するクライアント エンドポイントを構成に定義する必要があります。To configure the binding used for WS-Metadata Exchange, you must define a client endpoint in configuration that uses the IMetadataExchange contract. これを定義できる場所は、Svcutil.exe の構成ファイルか、/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>

引数Argument 説明Description
url メタデータを提供するサービス エンドポイントの URL またはオンラインになっているメタデータ ドキュメントの URL。The URL to a service endpoint that provides metadata or to a metadata document hosted online.
epr WS-Metadata Exchange をサポートするサービス エンドポイントの WS-Addressing EndpointReference を含む XML ファイルへのパスです。The path to an XML file that contains a WS-Addressing EndpointReference for a service endpoint that supports WS-Metadata Exchange.

XmlSerializer 型の生成XmlSerializer Type Generation

XmlSerializer を使用してシリアル化できるデータ型を使用するサービスおよびクライアント アプリケーションは、実行時にこのようなデータ型のシリアル化コードを生成およびコンパイルします。このため、起動時のパフォーマンスが低下することがあります。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.

注意

事前生成済みシリアル化コードはクライアント アプリケーションでのみ使用できます。サービスでは使用できません。Pre-generated serialization code can only be used in client applications and not in services.

Svcutil.exe は、必要な C# シリアル化コードをアプリケーションのコンパイル済みアセンブリから生成できるため、このようなアプリケーションの起動時のパフォーマンスが改善されます。Svcutil.exe can generate the necessary C# serialization code from the compiled assemblies for the application, thus improving start-up performance for these applications. 詳細については、「方法 :スタートアップ アプリケーション間を短縮の WCF クライアント、XmlSerializer を使用してします。For more information, see How to: Improve the Startup Time of WCF Client Applications using the XmlSerializer.

注意

Svcutil.exe は、入力アセンブリに存在するサービス コントラクトによって使用される型用のコードを生成します。Svcutil.exe only generates code for types used by Service Contracts found in the input assemblies.

svcutil.exe /t:xmlSerializer <assemblyPath>*

引数Argument 説明Description
assemblyPath サービス コントラクト型を格納するアセンブリへのパスを指定します。Specifies the path to an assembly that contains service contract types. シリアル化型は、各コントラクトのすべての Xml シリアル化可能型に対して生成されます。Serialization types are generated for all Xml Serializable types in each contract.
オプションOption 説明Description
/reference:<ファイルのパス >/reference:<file path> 指定したアセンブリを、型参照の解決に使用するアセンブリの集合に追加します。Adds the specified assembly to the set of assemblies used for resolving type references.

短縮形: /rShort Form: /r
/excludeType:<type>/excludeType:<type> エクスポートや検証から除外する完全修飾のまたはアセンブリ修飾の型名を指定します。Specifies the fully-qualified or assembly-qualified name of a type to be excluded from export or validation.

短縮形: /etShort Form: /et
/out:<file>/out:<file> 生成されるコードのファイル名を指定します。Specifies the filename for the generated code. このオプションは、複数のアセンブリが入力としてツールに渡される場合は無視されます。This option is ignored when multiple assemblies are passed as input to the tool.

既定:アセンブリ名から派生します。Default: Derived from the assembly name.

短縮形: /oShort Form: /o
/UseSerializerForFaults/UseSerializerForFaults 既定の XmlSerializer ではなく、DataContractSerializer をエラーの読み書きに使用する必要があることを指定します。Specifies that the XmlSerializer should be used for reading and writing faults, instead of the default DataContractSerializer.

使用例Examples

次のコマンドにより、実行中のサービスまたはオンラインのメタデータ ドキュメントからクライアント コードが生成されます。The following command generates client code from a running service or online metadata documents.

svcutil http://service/metadataEndpoint

次のコマンドにより、ローカルのメタデータ ドキュメントからクライアント コードが生成されます。The following command generates client code from local metadata documents.

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

次のコマンドにより、ローカルのスキーマ ドキュメントからデータ コントラクト型が Visual Basic で生成されます。The following command generates data contract types in Visual Basic from local schema documents.

svcutil /dconly *.xsd /language:VB

次のコマンドにより、実行中のサービスからメタデータ ドキュメントがダウンロードされます。The following command downloads metadata documents from running services.

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

次のコマンドにより、アセンブリに含まれるサービス コントラクトと関連する型のメタデータ ドキュメントが生成されます。The following command generates metadata documents for service contracts and associated types in an assembly.

svcutil myAssembly.dll

次のコマンドにより、アセンブリに含まれるサービス、すべての関連するサービス コントラクト、およびデータ型のメタデータ ドキュメントが生成されます。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

次のコマンドにより、アセンブリに含まれるデータ型のメタデータ ドキュメントが生成されます。The following command generates metadata documents for data types in an assembly.

svcutil myServiceHost.exe /dconly

次のコマンドにより、サービス ホスティングが検証されます。The following command verifies service hosting.

svcutil /validate /serviceName:myServiceName myServiceHost.exe

次のコマンドにより、アセンブリに含まれているサービス コントラクトによって使用される XmlSerializer 型用のシリアル化型を生成します。The following command generates serialization types for XmlSerializer types used by any service contracts in the assembly.

svcutil /t:xmlserializer myContractLibrary.exe

最大 Nametable 文字数のクォータMaximum Nametable Character Count Quota

svcutil を使用してサービスのメタデータを生成する場合、次のメッセージが表示されます。When using svcutil to generate metadata for a service, you may get the following message:

エラー :メタデータを取得できませんhttp://localhost:8000/somesservice/mexXML データの読み取り中には、最大 nametable 文字数のクォータ (16384) を超えました。Error: Cannot obtain Metadata from http://localhost:8000/somesservice/mex The maximum nametable character count quota (16384) has been exceeded while reading XML data. nametable は、XML 処理時に検出された文字列を格納するためのデータ構造です。反復されない要素名、属性名、および属性値が含まれた長い XML ドキュメントによってこのクォータがトリガーされることがあります。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. このクォータを増やすには、XML リーダーの作成時に使用される XmlDictionaryReaderQuotas オブジェクトの MaxNameTableCharCount プロパティを変更してください。This quota may be increased by changing the MaxNameTableCharCount property on the XmlDictionaryReaderQuotas object used when creating the XML reader.

このエラーの原因は、メタデータの要求時に大きな WSDL ファイルを返すサービスである可能性があります。This error can be caused by a service that returns a large WSDL file when you request its metadata. その結果、svcutil.exe ツールの文字のクォータを超えることになります。The problem is that the character quota for the svcutil.exe tool is exceeded. この値は、サービス拒否 (dos) 攻撃を防止するために設定されています。This value is set to help prevent denial of service (dos) attacks. このクォータは、次の svcutil の構成ファイルを指定して増やすことができます。You can increase this quota by specifying the following config file for svcutil.

次の構成ファイルは、svcutil のリーダーのクォータの設定方法を示しています。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>

svcutil.exe.config という名前の新しいファイルを作成し、XML のコード例をこのファイルにコピーします。Create a new file called svcutil.exe.config and copy the XML example code into it. svcutil.exe と同じディレクトリにファイルを配置します。Then place the file in the same directory as svcutil.exe. 次回 svcutil.exe が実行されると、新しい設定が適用されます。The next time svcutil.exe is run it will pick up the new settings.

セキュリティに関する注意事項Security Concerns

適切なアクセス制御リスト (ACL) を使用して、Svcutil.exe のインストール フォルダー、Svcutil.config、および /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. これによって、悪質な拡張機能が登録されて実行されるのを防ぐことができます。This can prevent malicious extensions from being registered and run.

さらに、セキュリティが侵害される可能性を最小限に抑えるには、システムの一部にするか、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.

また、現在のプロセスにサービス拒否を引き起こす可能性があるため、アプリケーションの中間層でツールを使用しないようにする必要があります。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.

関連項目See also