Служебное средство ServiceModel Metadata Utility Tool (Svcutil.exe)ServiceModel Metadata Utility Tool (Svcutil.exe)

Средство ServiceModel Metadata Utility используется для создания кода модели служб из документов метаданных и документов метаданных из кода модели службы.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 Metadata Utility Tool можно найти в папке установки 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 с использованием XmlSerializerHow 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.

Время ожиданияTimeout

Средство имеет время ожидания в течение пяти минут, при получении метаданных.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 из пакета SDK для .NET 4.If you want to generate a .NET 4 artifact from svcutil.exe, use the svcutil.exe from the .NET 4 SDK. Чтобы создать артефакт .NET 3.5, используйте исполняемый файл из пакета SDK платформы .NET 3.5.To generate a .NET 3.5 artifact, use the executable from the .NET 3.5 SDK.

Доступ к документам WSDLAccessing WSDL Documents

При использовании Svcutil для получения доступа к документу WSDL, который содержит ссылку на службу маркеров безопасности (STS), Svcutil осуществляет вызов службы маркеров безопасности по протоколу WS-MetadataExchange.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. Однако служба может предоставлять документы WSDL с помощью WS-MetadataExchange или запроса HTTP GET.However, the service can expose its WSDL documents using either WS-MetadataExchange or HTTP GET. Таким образом если только, STS предоставила документ WSDL, с помощью HTTP GET, произойдет сбой клиента, созданного в 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.5, Svcutil попытается использовать и 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.exeUsing 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:<тип выходных данных >/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. Укажите переключатель/erviceContract и URL-адрес, откуда можно загрузить документ WSDL, или расположение файла, где его можно найти.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. Файлы cookie используются для создания контекста на сервере.The cookies are used for context on the server. Если необходимо управлять контекстом в клиенте при использовании службой файлов cookie, можно вручную изменить настройки для использования контекстной привязки.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, этот формат не является допустимым, и созданное средством имя участника-пользователя вызывает сбой проверки подлинности 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 Путь к файлу XML, который содержит ссылку на конечную точку службы WS-Addressing EndpointReference, которая поддерживает WS-Metadata Exchange.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-адрес конечной точки службы, предоставляющей метаданные, или документа метаданных, размещенного в сети.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:<тип >/excludeType:<type> Задает полное имя типа или имя типа с указанием на сборку, который необходимо исключить из ссылочных типов контракта.Specifies a fully-qualified or assembly-qualified type name to be excluded from referenced contract types.

При использовании этого переключателя вместе с /r из отдельных библиотек DLL создается ссылка на полное имя класса 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> Задает язык программирования, используемый для создания кода.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:<строка, строка >/namespace:<string,string> Задает сопоставление атрибута targetNamespace WSDL или схемы XML пространству имен среды CLR.Specifies a mapping from a WSDL or XML Schema targetNamespace to a CLR namespace. С помощью "*" targetNamespace сопоставляются все атрибуты targetNamespace без явного сопоставления с пространством имен CLR.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:<файла >/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 Определяет, используется ли особый подход для документов со стилем document-literal с параметрами в оболочке.Controls whether special-casing is used for document-literal styled documents with wrapped parameters. Используйте / wrapped с параметром Service Model Metadata Utility Tool (Svcutil.exe) средства для указания обычного регистра.Use the /wrapped switch with the Service Model Metadata Utility Tool (Svcutil.exe) tool to specify normal casing.

Примечание

Когда в привязке службы является одним из предоставляемых системой привязок (см. в разделе System-Provided Bindings) и 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. Например, если служба использует элемент <wsHttpBinding>, свойству ProtectionLevel которого задано значение Sign, раздел привязок создаваемой конфигурации будет содержать <customBinding> вместо <wsHttpBinding>.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. Если файлы конфигурации содержат какие-либо типы расширения, сборки, в состав которых входят эти типы, должны находиться в глобальном кэше сборок или явно предоставляться с использованием параметра /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. При экспорте или проверке службы, использующей сторонние расширения (поведения, привязки и элементы привязок), которые зарегистрированы в конфигурации, этот параметр необходимо использовать для определения местоположения сборок расширения, которые находятся не в глобальном кэше сборок.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:<тип >/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. Если файлы конфигурации содержат какие-либо типы расширения, сборки, в состав которых входят эти типы, должны находиться в глобальном кэше сборок или явно предоставляться с использованием параметра /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. При экспорте или проверке службы, использующей сторонние расширения (поведения, привязки и элементы привязок), которые зарегистрированы в конфигурации, этот параметр необходимо использовать для определения местоположения сборок расширения, которые находятся не в глобальном кэше сборок.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:<тип >/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 на предоставленный адрес с присоединенным /mexMEX request to the supplied address with /mex appended

  • Запрос DISCO (с использованием протокола DiscoveryClientProtocol из ASMX) на предоставленный адрес.DISCO request (using the DiscoveryClientProtocol from ASMX) to the supplied address.

По умолчанию для осуществления запросов MEX Svcutil.exe использует привязки, определенные в классе MetadataExchangeBindings.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-адрес конечной точки службы, предоставляющей метаданные, или документа метаданных, размещенного в сети.The URL to a service endpoint that provides metadata or to a metadata document hosted online.
epr Путь к файлу XML, который содержит ссылку на конечную точку службы WS-Addressing EndpointReference, которая поддерживает WS-Metadata Exchange.The path to an XML file that contains a WS-Addressing EndpointReference for a service endpoint that supports WS-Metadata Exchange.

Создание типа XmlSerializerXmlSerializer 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:<тип >/excludeType:<type> Задает полное имя типа или имя типа с указанием на сборку, который необходимо исключить из экспорта или проверки.Specifies the fully-qualified or assembly-qualified name of a type to be excluded from export or validation.

Сокращенная форма: /etShort Form: /et
/ out:<файла >/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

Максимальная квота на количество символов в таблице имен.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/mex было превышено символ число квота максимального (16384) при чтении данных XML.Error: Cannot obtain Metadata from http://localhost:8000/somesservice/mex The maximum nametable character count quota (16384) has been exceeded while reading XML data. Таблица имен является структурой данных, в которой хранятся строки, обнаруженные при обработке данных 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. Эту квоту можно увеличить, изменив свойство MaxNameTableCharCount объекта XmlDictionaryReaderQuotas, используемого при создании средства чтения XML.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. Это значение задается, чтобы предотвратить атаки типа «отказ в обслуживании».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

Для защиты папки установки Svcutil.exe, файла конфигурации Svcutil.config и файлов, на которые указывает /svcutilConfig, необходимо использовать соответствующий список управления доступом (ACL).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