2008-11-13 4 views
0

J'essaie de partager des DTO de mon assembly datalayer entre le client et le service WCF. Cela fonctionne en utilisant svcutil, mais ne fonctionne pas en utilisant VS2008. VS2008 génère ses propres objets DTO alors que svcutil utilise le type de données partagé.Les types de partage dans WCF utilisant VS 2008 ne fonctionnent pas

Les paramètres de svcutil j'utilisés sont:

"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 

Je lis que VS2008 appelle simplement svcutil dans les coulisses, alors pourquoi ça ne marche pas? Je veux vraiment éviter d'ajouter un processus manuel au processus de construction.

Répondre

0

J'ai créé un fichier batch qui appelle svcutil et l'a ajouté en tant que tâche de préconfiguration pour éviter qu'il s'agisse d'une opération manuelle. Cela a résolu mon problème, mais je ne sais toujours pas pourquoi il existe un comportement différent entre svcutil et la méthode gui vs2008.

0

Si vous évitez d'utiliser une référence de service et que vous incluez simplement une référence au code généré par svcutil, cela devrait éviter ce problème. Nos DTO sont dans des assemblages partagés.

4

Utilisez simplement ClientFactory<T>.

Vous n'avez pas vraiment besoin de svcutil ni de référence de service. Le code qu'ils génèrent est seulement un wrapper gonflé autour de ClientFactory qui n'ajoute pratiquement aucune fonctionnalité.

+0

Cela m'a beaucoup aidé, cela m'a permis de régler un problème qui nous causait des problèmes pendant des jours! Merci! –

Questions connexes