Ответ 1
Похоже, Microsoft предоставляет Disco.exe для этого.
Каков наилучший способ загрузки всех файлов WSDL, открытых службой WCF?
Например, корневой файл WSDL ссылается на следующие файлы WSDL:
<xsd:import schemaLocation="http://localhost:80/?xsd=xsd0" namespace="http://tempuri.com"/>
<xsd:import schemaLocation="http://localhost:80/?xsd=xsd1" namespace="http://tempuri.com"/>
В идеале можно было бы автоматизировать загрузку, чтобы каждый раз, когда WSDL менялся, было бы легко распределить файлы клиенту или включить в документ/SDK.
Похоже, Microsoft предоставляет Disco.exe для этого.
Между тем, disco.exe считается устаревшей технологией Microsoft.
Вы можете использовать svcutil.exe /t:metadata
для достижения этого в возрасте WCF. Дополнительные преимущества - поддержка дополнительных функций, например WS-Policy.
Сохранить схему из URL:
svcutil /t:metadata http://host/pathtomy.svc?wsdl
Сохранить схему из сборки, например, в автоматическом сборке:
svcutil /t:metadata c:\wcfweb\pathToWcfServiceAssembly.dll
Если у вас есть услуга, еще один интересный вариант, который вы можете изучить, - это использование Christian Weyer FlatWSDL поведение, которое заставит WCF генерировать все в один документ WSDL, который должен значительно облегчить вам распространение.
Существует простой фрагмент кода, который позволяет загружать WSDL и все принадлежащие XSD файлы для использования в автономном режиме (например, для генерации кода).
Обновление
Блог, в котором был показан фрагмент кода, больше не доступен. К счастью, Пабло Диез создал небольшой проект, основанный на моем сообщении в блоге, и загрузил его в github. Он доступен здесь: https://github.com/pablod/xsd-downloader