У меня есть служба WCF с конечной точкой mex для метаданных. Я использую SvcUtil через Visual Studio для генерации кода контрактов на данные клиента (C #) во время работы службы. SvcUtil добавляет атрибуты KnownType для унаследованных и ссылочных типов. У меня есть настраиваемый преобразователь контрактов данных, и я не использую эти известные типы. Как я могу заставить SvcUtil или WSDL Importer не помечать все эти типы атрибутами KnownType? Мой худший сценарий - просмотреть файл после генерации кода и удалить эти атрибуты, но я надеюсь, что есть более чистый способ сделать это.
Очистка атрибутов KnownType во время генерации кода SvcUtil и WSDL
Ответы (1)
Один из вариантов - добавить известные типы в файл конфигурации. Файл конфигурации не обязательно должен быть вашим app.config (или web.config). Это можно было бы назвать dummy.config
.
При запуске svcutil.exe добавьте следующий параметр /svcutilConfig:dummy.config
. Когда клиентский код сгенерирован, ваши атрибуты KnownType должны исчезнуть.
Вот еще один пример регистрация известных типов с помощью файла конфигурации.
person
RobV8R
schedule
20.08.2018
Спасибо. Я пытаюсь удалить из поколения только атрибуты известного типа, сохраняя при этом объявленные типы. Из файла конфигурации я мог бы очистить объявленные типы, но я не могу очистить известные типы, если я вручную не напишу каждый объявленный тип, а затем очищу их соответствующие известные типы, что невозможно. Если я что-то здесь не упустил ...
- person LadderLogic; 21.08.2018
На самом деле я как раз думал об этом. Вам придется вручную создать (и поддерживать) файл конфигурации. Один из вариантов - создать шаблон T4 на основе метаданных WCF. Это не серебряная пуля, но я думаю, что она отвечает на ваш первоначальный вопрос.
- person RobV8R; 21.08.2018
Вы нашли альтернативное решение?
- person RobV8R; 22.08.2018
к сожалению, не изящный. В настоящее время придерживается очистки кода после генерации.
- person LadderLogic; 22.08.2018
ServiceKnownTypeAttribute
s. В этом случае я не уверен, как это повлияет. Ниже я предложил альтернативное решение. - person RobV8R   schedule 21.08.2018