Совместное использование типов в WCF с использованием VS 2008 не работает

Я пытаюсь разделить DTO из моей сборки уровня данных между клиентом и службой WCF. Это работает с использованием svcutil, но не работает при использовании VS2008. VS2008 генерирует свои собственные объекты DTO, тогда как svcutil использует общий тип данных.

Я использовал следующие параметры svcutil:

"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\SvcUtil" 
          /serializer:DataContractSerializer
          /language:vb 
          /out:ServiceClient.cs
          /namespace:*,CommonWCF 
          /noconfig
          /reference:"D:\trunk\DataLayer\bin\Debug\DataLayer.dll"
          /collectionType:System.Collections.Generic.List`1
          http://localhost:3371/Common.svc

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

3 ответа

Решение

Я создал пакетный файл, который вызывает svcutil, и добавил его в качестве задачи перед сборкой, чтобы избежать ручной операции. Это решило мою проблему, но я все еще не уверен, почему существует другое поведение между svcutil и методом графического интерфейса vs2008.

Просто используйте ClientFactory<T>,

Вам на самом деле не нужен ни svcutil, ни сервисный справочник. Код, который они генерируют, является только раздутой оболочкой вокруг ClientFactory, которая практически не добавляет функциональности.

Если вы избегаете использования ссылки на службу и просто включаете ссылку на сгенерированный svcutil код, тогда следует избегать этой проблемы. Наши DTO находятся в общих собраниях.

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