Как экспортировать метаданные для одного контракта с svcutil.exe?

У меня есть два ServiceContracts, реализованных как интерфейсы. Я хочу экспортировать метаданные только для одного из них. Хитрость в том, что оба интерфейса реализованы одним и тем же классом. Поэтому я не думаю, что я могу использовать / исключить типы. Пожалуйста, включите пример синтаксиса при ответе. Спасибо!

РЕДАКТИРОВАТЬ: коллега недавно спросил меня, почему это необходимо. Причина в том, что первый ServiceContract предназначен для службы REST, для которой нет смысла экспортировать метаданные. Таким образом, я получаю два файла wsdl и xsd, которые различаются только потому, что к второму имени файла добавляется "1". Это усложняет инструментарий и добавляет больше беспорядка в выходной каталог.

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

1 ответ

Решение

Я создал класс Service Contract, реализующий 2 интерфейса, как вы описали.

namespace NS
{
    [ServiceContract]
    public interface IREST
    {
        [OperationContract]
        string WorldHello(string name);
    }

    [ServiceContract]
    public interface IInterface
    {
        [OperationContract]
        string HelloWorld(string name);
    }

    public class CI2 : IREST, IInterface
    {
        public string WorldHello(string name)
        {
            return "World Hello: " + name;
        }

        public string HelloWorld(string name)
        {
            return "Hello World: " + name;
        }
    }
}

при нормальном запуске svcutil я получаю wsdl с методами из 2 интерфейсов
например, когда я запускаю svcutil с /excludeType:IREST, я получаю только методы IInterface.

svcutil /excludeType:NS.IREST ci2service.exe

Вы используете ту же конфигурацию? В таком случае /excludeType работает.

Другие вопросы по тегам