2010-01-14 7 views
10

Estoy buscando el mejor enfoque para compartir tipos (las clases reales, no proxies) entre un servicio WCF y un cliente. Con ese fin, definí las clases en un ensamble separado que tanto el servicio como la referencia del cliente. Seleccioné "Reutilizar tipos en todos los ensamblados a los que se hace referencia" al generar la referencia de servicio en el cliente, pero References.cs se genera con proxies para todas las clases.WCF Service Reference no reutiliza tipos en ensamblados existentes (VS 2010 Beta 2)

Esta es exactamente la misma pregunta que this one, pero no sé cómo implementar la solución aceptada. Una diferencia es que estoy usando VS 2010 Beta 2.

importación del contrato de servicio completa en forma de código

o

crear su propia clase ClientBase derivados. Es realmente muy fácil

Suponiendo que este es el mejor enfoque, agradecería un buen enlace que cubra cómo hacerlo. ¿Es el enfoque descrito en la respuesta vinculada el mejor?

Respuesta

15

Hice dos cosas en el mismo paso. No estoy seguro si uno o ambos resolvieron el problema:

  1. añadido un [DataContract (Espacio de nombres = "My.Shared.Assemblys.Namespace")] para una de las clases en el ensamblado compartido.
  2. Restarted VS 2010 Beta 2
+4

Hoy tuve exactamente el mismo problema con VS2012 Update 1. Después de cambiar 'DataContracts' varias veces, primero todos los tipos ya no se volvían a utilizar. Reiniciar VS había ayudado ... – Desty

+3

VS 2012 - un simple reinicio lo arregló para mí –

+0

Lo mismo con VS 2010 Pro – xr280xr

1

Mi problema con SP1 de VS2010 estaba tratando de utilizar una clase que deriva de Dictionary<T,U> con un atributo CollectionDataContract. Parece que VS no reutilizará el tipo ... También probé la sugerencia de Eric anterior, pero no funcionó.

3

Tuve el mismo problema, pero olvidé construir el ensamblado con DataContracts para el cliente y, por lo tanto, estaba generando sus propios contratos. Una vez que reconstruí el conjunto, lo reutilizó.

+0

¡Reconstrucción del ensamblaje al que se hace referencia + "Actualización del servicio de referencia" ayudado! –