Как экспортировать метаданные для одного контракта с svcutil.exe? - PullRequest
1 голос
/ 16 сентября 2009

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

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

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

1 Ответ

2 голосов
/ 08 октября 2009

Я создал класс 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 работает.

...