Если у вас есть доступ к скомпилированному файлу DLL службы, вы можете использовать утилиту командной строки SvcUtil для генерации WSDL и связанных XSD для контрактов данных. Основной недостаток этого подхода заключается в том, что вам необходимо добавить имя файла XSD, сгенерированного SvcUtil, в каждый элемент xsd: import в значение атрибута schemaLocation.
Ниже приведены примеры модифицированных элементов xsd: import. Для пространства имен «http://tempuri.org/"» я добавил атрибут schemaLocation со значением «tempuri.org.xsd», чтобы процесс «Добавление справочника услуг» знал, что ищет этот файл в той же папке, что и файл WSDL. ваш WSDL использует вместо этого wsdl: import, добавьте атрибут location вместо атрибута schemaLocation. Этот связанный вопрос и ответ должны дать хорошее начало.
<wsdl:types>
<xsd:schema targetNamespace="http://tempuri.org/Imports">
<xsd:import namespace="http://tempuri.org/" schemaLocation="tempuri.org.xsd" />
<xsd:import namespace="http://schemas.microsoft.com/2003/10/Serialization/" schemaLocation="schemas.microsoft.com.2003.10.Serialization.xsd" />
</xsd:schema>
</wsdl:types>
EDIT:
Генерация клиентского кода с использованием скомпилированной служебной DLL требует двухэтапного процесса. SvcUtil нужен сервис WSDL для генерации клиента. Он не может напрямую использовать скомпилированную DLL.
Сначала сгенерируйте WSDL с помощью библиотеки DLL, содержащей ServiceContract. Я думаю, что вы можете использовать файл реализации сервиса, если DLL контракта сервиса также находится в той же папке.
cd "\Path\To\Your\Service\DLLs"
svcutil YourService.DLL
Это создаст несколько файлов в зависимости от структуры вашего сервиса. Там будет один файл .WSDL и несколько файлов .XSD. Отредактируйте эти файлы, как показано выше.
Наконец, либо используйте диалоговое окно «Добавить ссылку на службу Visual Studio», чтобы выбрать отредактированный файл .WSDL (просто введите полный путь и имя файла), чтобы сгенерировать код клиента, либо используйте SvcUtil следующим образом:
svcutil *.wsdl *.xsd /language:C#