svcUtil не генерирует тот же вывод из WSDL - PullRequest
0 голосов
/ 29 марта 2020

Я пытаюсь использовать svcutil для генерации клиентских контрактных файлов для моего клиента из файла WSDL, в котором есть только незначительные изменения (добавлены значения в перечисляемые значения) - я проверил с помощью нескольких инструментов DIFF.

Но сгенерированные классы контрактов отличаются - главное, чтобы у старых классов контрактов были Входные данные и Выходные данные задач для клиента, заключенные в «Запрос» и объекты "Response", тогда как теперь ввод и вывод "оставлены без изменений".

Пример старого сгенерированного кода:

///attributes left out for brevity, they are the same in both
public interface IServiceWS
{

    ///left out for brevity, same in both
    Contracts.VyhledejVozidloIDResponse VyhledejVozidloID(Contracts.VyhledejVozidloIDRequest request);

Тогда как теперь сгенерированный код:

///attributes left out for brevity, they are the same in both
public interface IServiceWS
{
   ///left out for brevity, same in both
   Contracts.VozidloStructure[] VyhledejVozidloID(Contracts.UzivatelInfoStructure UzivatelInfo, int[] VozidloID);

И код для генерации контракта:

@set SVCUTIL="%WindowsSDK_ExecutablePath_x64%\SvcUtil.exe"
@set SERVICE=http://localhost/ServiceWS/ServiceWS.wsdl

%SVCUTIL% /namespace:*,Contracts /out:Contracts.cs ^
    %SERVICE%

Я почти уверен, что код для генерации старого контракта такой же, но старая версия была сгенерирована два года спустя go в более старой визуальной студии с более старыми. net framework.

Старый Contracts.VyhledejVozidloIDResponse содержит Contracts.VozidloStructure[].

Contracts.VyhledejVozidloIDRequest объектов-оболочек содержит распакованный материал Contracts.UzivatelInfoStructure UzivatelInfo и int[] VozidloID.

Что я должен изменить, чтобы генерировать его в старом стиле?

1 Ответ

0 голосов
/ 29 марта 2020

В конце концов я решил свою собственную проблему.

Ответ для меня проявился после того, как я наконец нашел немного документации по https://docs.microsoft.com/cs-cz/dotnet/framework/wcf/servicemodel-metadata-utility-tool-svcutil-exe

И это использовал аргумент /wrapped. Вывод по-прежнему не был точно таким же (поскольку он генерировал гораздо больше классов-оболочек для множества вещей), но я мог обойти это, в отличие от работы с развернутыми параметрами запрос / ответ, что потребовало бы от меня изменения всей логики абстрактного клиента c у нас есть в нашем проекте.

...