Генерация файлов на основе Service.svcmap с помощью инструмента командной строки

#c#

#c#

Вопрос:

Есть ли у вас какие-либо идеи, как можно сгенерировать производные файлы (*.xsd, *.wsdl, *.svcinfo, *.datasource и, наконец, Reference.cs), используя файл Reference.svcmap? В VS (2015) это легко сделать, щелкнув правой кнопкой мыши и выбрав «Обновить ссылку на службу», но как это работает с использованием любого инструмента командной строки? (Без Reference.cs решение не может быть скомпилировано, было бы неплохо сгенерировать необходимые файлы в качестве события предварительной сборки.)

Заранее благодарю вас!

Ответ №1:

Я полагаю, вы ищете svcutil.exe инструмент:

https://learn.microsoft.com/de-de/dotnet/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe

Обновить:

Я еще немного покопался. Используемый пользовательский инструмент определен в Microsoft.VisualStudio.Editors.WCF, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a сборке. Похоже, что это не используется в svcutil.exe инструменте. Сборка находится в gac, но я не знаю, как ее можно выполнить с помощью командной строки. Вероятно, вам лучше всего использовать wsdl для ссылки на ваш сервис и вместо этого использовать инструмент svcutil.

На самом деле, я только что попробовал сгенерировать код, используя только файл Reference.svcmap, и результатом стал пустой файл Reference.cs, содержащий только комментарий «автоматически созданный». Итак, одного файла Reference.svcmap недостаточно для генерации кода прокси-сервера клиента. Вам потребуется больше входных данных, чем это. Когда вы запускаете опцию «обновить ссылку на службу» в Visual Studio, она обычно извлекает все метаданные из конечной точки обмена метаданными и восстанавливает ваш код. Этого также можно достичь с помощью svcutil.exe , передав URL сервиса.

Комментарии:

1. Спасибо, но, скорее всего svcutil.exe не подходит для этого. Он может использовать файлы *.xsd, *.wsdl для генерации Reference.cs , но не может выполнить первый шаг (генерация этих типов файлов из Reference.svcmap ). Или, может быть, но правильный список параметров для достижения этого мне неизвестен.