El otro día modifiqué un servicio WCF y me tocó pegarme, a continuación, con la aplicación cliente. Siguiendo el manual, en su día utilicé «Agregar referencia de servicio» de Visual Studio. Actualizar luego es siempre un dolor de cabeza. Las clases de datos y las enumeraciones utilizadas por el servicio las comparto vía NuGet y las tiene el cliente. En teoría, le puedes indicar al asistente que utilice esos ensamblados en lugar de generar de nuevo todo, pero al actualizar… raro es que funcione a la primera.
Entonces encontré este viejo artículo y, aún mejor, esta explicación con ejemplos de ese artículo. Cómo crear a mano los proxy de cliente. Vaya cosa simple. Vaya forma de hacer el canelo todos estos años.
Así que paré todo y dediqué dos días a llevarme las interfaces de los contratos de servicio a otro proyecto, crear un tercero con los proxy de cliente, empaquetarlos y distribuirlos por NuGet. Los agregué al cliente, eliminé el código generado por Visual Studio y lo sustituí por las nuevas clases y listo.
De paso, compilé los nuevos proyectos para .Net Core y lo probé con una aplicación Visual Basic. Iba genial, lo que es un alivio porque el Agregar referencia de servicio en proyectos de .Net Core sólo aparece para C#.
Me gusta cuando aprendo algo nuevo de una tecnología que llevo usando años. Por una parte me da rabia (es algo que debería haber sabido antes, pienso), por otra me muestra todo lo que me queda por mejorar en las áreas que controlo.