2009-09-16 2 views
1

У меня есть два ServiceContracts, реализованные как интерфейсы. Я хочу экспортировать метаданные только для одного из них. Фокус в том, что оба интерфейса реализованы того же класса. Поэтому я не думаю, что могу использовать/excludeTypes. При ответе укажите пример синтаксиса. Благодаря!Как экспортировать метаданные для одного контракта с помощью svcutil.exe?

EDIT: Сотрудник недавно спросил меня, почему это необходимо. Причина в том, что первый ServiceContract предназначен для службы REST, для которой не имеет смысла экспортировать метаданные. Таким образом, я получаю два созданных файла wsdl и xsd, различимых только потому, что второе имя файла добавлено с «1». Это затрудняет работу инструмента и добавляет больше помех в выходной каталог.

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

ответ

2

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

+0

Это сработало отлично! Я не знаю, почему мне не приходило в голову, что я могу поместить * интерфейс * в/excludeTypes. Спасибо за вашу помощь - награждены полные баллы! – GuyBehindtheGuy

Смежные вопросы