Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
[ПСП] Учебник WCF.docx
Скачиваний:
48
Добавлен:
26.03.2016
Размер:
147.76 Кб
Скачать

Использование программы SvcUtil.Exe

Типичные способы использования

В следующей таблице перечислены некоторые наиболее часто используемые параметры этого средства.

Параметр

Описание

/directory:<каталог>

Каталог, в котором создаются файлы.

По умолчанию: текущий каталог.

Сокращенная форма: /d

/help

Отображает синтаксис команд и параметров для средства.

Сокращенная форма: /?

/nologo

Подавляет вывод логотипа и сообщения об авторском праве.

/svcutilConfig:<файл_конфигурации>

Задает пользовательский файл конфигурации, который следует использовать вместо файла App.config. С его помощью можно регистрировать расширения system.serviceModel, не изменяя файл конфигурации средства.

/target:<выходной тип>

Задает выходные объекты, которые должны быть созданы с помощью средства.

Допустимыми значениями являются code, metadata или xmlSerializer.

Сокращенная форма: /t

Создание кода

Svcutil.exe может создавать код для контрактов службы, клиентов и типы данных из документов метаданных. Документы метаданных могут находиться в устойчивом хранилище или извлекаться в оперативном режиме. Извлечение в оперативном режиме происходит либо по протоколу WS-Metadata Exchange, либо по протоколу DISCO (дополнительные сведения см. в разделе "Загрузка метаданных").

Можно использовать средство SvcUtil.exe для создания контрактов службы и данных, основанных на предопределенном документе WSDL. Используйте переключатель /serviceContract и укажите URL-адрес, откуда можно загрузить документ WSDL, или расположение файла, где его можно найти. Это создаст контракты службы и данных, определенные в документе WSDL, которые можно будет использовать для реализации службы жалобы. Дополнительные сведения см. вКак извлечь метаданные и реализовать совместимую службу.

Вместо этого для службы с конечной точкой BasicHttpContextbinding Svcutil.exe создает привязку BasicHttpBinding с атрибутом allowCookies с заданным значением true. Файлы cookie используются для создания контекста на сервере. Если необходимо управлять контекстом в клиенте при использовании службой файлов cookie, можно вручную изменить настройки для использования контекстной привязки.

Внимание

Svcutil.exe создает клиент на основе файла WSDL или файла политики, полученного от службы. Имя участника-пользователя (UPN) создается добавлением к имени пользователя символа "@" и полного доменного имени (FQDN). Однако для пользователей, зарегистрированных в Active Directory, этот формат не является допустимым, и созданное средством имя участника-пользователя вызывает сбой проверки подлинности Kerberos с выдачей сообщения об ошибке "Сбой попытки входа в систему". Чтобы устранить эту проблему, необходимо вручную исправить файл клиента, созданный средством.

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

Аргумент

Описание

epr

Путь к файлу XML, который содержит ссылку на конечную точку службы WS-Addressing EndpointReference, которая поддерживает WS-Metadata Exchange. Дополнительные сведения см. в разделе "Загрузка метаданных".

metadataDocumentPath

Путь к документу метаданных (wsdl или xsd), который содержит контракт для импортирования в код (.wsdl, .xsd, .wspolicy или .wsmex).

Svcutil следит за ходом импортирования и включает удаленный URL-адрес для метаданных, когда указано пользователем. Однако если файлы метаданных необходимо обработать в локальной файловой системе, все файлы следует задавать в этом аргументе. Таким образом, Svcutil можно использовать в среде построения, где отсутствуют сетевые зависимости. Для этого аргумента можно использовать подстановочные знаки (например, XSD, WSDL).

url

URL-адрес конечной точки службы, предоставляющей метаданные, или документа метаданных, размещенного в сети. Дополнительные сведения об извлечении этих документов см. в разделе "Загрузка метаданных".

Параметр

Описание

/async

Создает сигнатуры как синхронных, так и асинхронных методов.

По умолчанию: создает только сигнатуры синхронных методов.

Сокращенная форма: /a

/collectionType:<тип>

Создает сигнатуры как синхронных, так и асинхронных методов.

По умолчанию: создает только сигнатуры синхронных методов.

Сокращенная форма: /a

/config:<файл_конфигурации>

Задает имя файла для создаваемого файла конфигурации.

По умолчанию: output.config

/dataContractOnly

Создает код только для типов контрактов данных. Типы контрактов службы не созданы.

Для этого параметра следует задавать только локальные файлы метаданных.

Сокращенная форма: /dconly

/enableDataBinding

Реализует интерфейс INotifyPropertyChangedдля всех типов контрактов данных для обеспечения привязки данных.

Сокращенная форма: /edb

/excludeType:<тип>

Задает полное имя типа или имя типа с указанием на сборку, который необходимо исключить из ссылочных типов контракта.

При использовании этого переключателя вместе с /r из отдельных библиотек DLL создается ссылка на полное имя класса XSD.

Сокращенная форма: /et

/importXmlTypes

Служит для настройки сериализатора контракта данных для импортирования типов, отличных от типов контракта данных, в качестве типов IXmlSerializable.

/internal

Создает классы, помеченные как внутренние. По умолчанию: создает только открытые классы.

Сокращенная форма: /i

/language:<язык>

Задает язык программирования, используемый для создания кода. Необходимо указать либо имя языка, зарегистрированное в файле Machine.config, либо полное имя класса, наследуемого от CodeDomProvider.

Значения: c#, cs, csharp, vb, visualbasic, c++, cpp

По умолчанию: csharp

Сокращенная форма: /l

Примечание

Переключатель поддерживает только С++ для поставщика кода, который поставляется с Visual Studio 2005 SP1.

/mergeConfig

Объединяет созданную конфигурацию с существующим файлом (вместо перезаписи существующего файла).

/messageContract

Создает типы контрактов сообщений.

Сокращенная форма: /mc

/namespace:<string,string>

Задает сопоставление атрибута targetNamespace WSDL или схемы XML пространству имен среды CLR. Использование подстановочного знака '*' для атрибута targetNamespace позволяет сопоставить все атрибуты targetNamespace без явного сопоставления пространству имен среды CLR.

Чтобы убедиться, что имя контракта сообщения не конфликтует с именем операции, необходимо дополнить ссылку на тип двойными двоеточиями (::) или задать уникальные имена.

По умолчанию: для контрактов данных выводится из целевого пространства имен документа схемы. Для всех остальных создаваемых типов используется пространство имен по умолчанию.

Сокращенная форма: /n

/noConfig

Запрещает создавать файлы конфигурации.

/noStdLib

Запрещает ссылаться на стандартные библиотеки.

По умолчанию: создаются ссылки на файлы Mscorlib.dll и System.servicemodel.dll.

/out:<файл>

Задает имя файла созданного кода.

По умолчанию: наследуется от имени определения WSDL, имени службы WSDL или целевого пространства имен одной из схем.

Сокращенная форма: /o

/reference:<путь к файлу>

Ссылается на типы в заданной сборке. При создании клиентов необходимо использовать этот параметр для задания сборок, которые могут содержать типы, представляющие импортируемые метаданные.

С помощью этого переключателя невозможно задать контракты сообщений и типы XmlSerializer.

При ссылке на DateTimeOffsetвместо создания нового типа используется этот тип. Если приложение создано с использованием .NET Framework 3.5, SvcUtil.exe автоматически ссылается наDateTimeOffset.

Сокращенная форма: /r

/serializable

Создает классы, помеченные сериализуемым атрибутом.

Сокращенная форма: /s

/serviceContract

Сформировать код только для контрактов службы. Класс клиента и его конфигурация не будут сформированы.

Сокращенная форма: /sc

/serializer:Auto

Создает классы, помеченные сериализуемым атрибутом.

Сокращенная форма: /s

/serializer:DataContractSerializer

Создает типы данных, использующие сериализатор контракта данных для сериализации и десериализации.

Сокращенная форма: /ser:DataContractSerializer

/serializer:XmlSerializer

Создает типы данных, использующие для сериализации и десериализации сериализатор XmlSerializer.

Сокращенная форма: /ser:XmlSerializer

/targetClientVersion

Указывает, на какую версию .NET Framework нацелено приложение. Допустимые значения: Version30 и Version35. Значением по умолчанию является Version30.

Сокращенная форма: /tcv

Version30 : при создании кода для клиентов, работающих с WinFX, следует использовать /tcv:Version30.

Version35 : при создании кода для клиентов, работающих с .NET Framework 3.5, следует использовать /tcv:Version35. При использовании/tcv:Version35с переключателем /async создаются асинхронные методы как на основе событий, так и на основе обратных вызовов/делегатов. Кроме того, включена поддержка наборов данных с поддержкой LINQ иDateTimeOffset.

/wrapped

Определяет, используется ли особый подход для документов со стилем document-literal с параметрами в оболочке. Используйте ключ /wrappedсо средствомСлужебное средство ServiceModel Metadata Utility Tool (Svcutil.exe)для указания обычного регистра.

Примечание

Если привязка службы предоставляется системой (см. раздел Привязки, предоставляемые системой) и свойствуProtectionLevelзадано значение None или Sign, Svcutil создает файл конфигурации с использованием элемента<customBinding>, а не элемента, предоставляемого системой. Например, если служба использует элемент <wsHttpBinding>, свойству ProtectionLevel которого задано значение Sign, раздел привязок создаваемой конфигурации будет содержать <customBinding> вместо <wsHttpBinding>. Дополнительную информацию об уровне защиты можно найти в разделеОсновные сведения об уровне защиты.