La construcción de una aplicación que se basa en un proveedor de 3 ª parte que tiene un conjunto muy detallado de los servicios SOAP (estamos hablando de más de 50 archivos WSDL). Sin embargo, cada WSDL individual tiene numerosas declaraciones de tipos compartidos. Al generar el código de cliente con wsdl.exe, solía haber un indicador/sharedtypes que fusionaría entradas duplicadas si se encontraba un tipo varias veces./sharedtypes equivalent for svcutil.exe?
Cuando intento para generar el código cliente, bomba sobre estos tipos se solapan y que la tercera parte incluye en todos sus archivos WSDL.
svcutil /t:code /importxmltypes [mypath]/*.wsdl
Resultados en mensajes de error alusivos a las colisiones de tipo. Por ejemplo, un par de muestras de los mensajes de error siguientes:
Error: There was an error verifying some XML Schemas generated during export:
The simpleType 'http://common.soap.3rdparty.com:CurrencyNotation' has already been
declared.
Error: There was an error verifying some XML Schemas generated during export:
The complexType 'http://common.soap.3rdparty.com:NumberFormat' has already been
declared.
que no tienen control sobre la salida de los WSDL. No quiero tener que editar los WSDL a mano por temor a un error que se rompa de una manera en el tiempo de ejecución que sería muy difícil de rastrear a nuestra edición de los archivos WSDL. Sin mencionar que hay 50 archivos WSDL que van de 200 a 1200 líneas de XML. (Recuérdame otra vez por qué pensamos jabón era la gran salvación a todos nosotros a finales de los años 90?)
Todos los WSDL son locales, pero eso no viene al caso. Mi problema no es que no pueda pasar varios archivos .wsdl. El problema es que la fuente ha incluido múltiples tipos de datos en cada archivo wsdl (o varios, si no todos). Por ejemplo, navegando, de los primeros 6 wsdls que abrí, parece que 5 tienen una entrada ComplexElement para un tipo llamado CurrencyNotation. Cuando svcutil intenta analizar todos mis wsdls, dice, oh hey, currencyNotation ya existe, LO SIENTO. AUGE. – bakasan
Así que estás diciendo que teclear individualmente cada ruta wsdl se comportará de manera diferente a going * .wsdl (todas las wsdls residen localmente). Como esta es la primera generación de nuestros proxies, realmente no tengo un ensamblado al que hacer referencia. ¿Sería una estrategia analizar un wsdl, compilarlo en un dll y luego hacer referencia al siguiente? ¿Resolver engaños, luego enjuagar y repetir para el resto? – bakasan
no estaba listo para escribir las rutas de los más de 50 archivos WSDL, pero las pruebas w/sólo dos, svcutil foo.wsdl bar.wsdl bombardearon a cabo w/el mismo mensaje de tipos duplicados. Después de haber tratado con dolores de wsdl.exe hace años, no es muy reconfortante ver que svcutil.exe en este día y edad no parece mucho mejor. :PAG – bakasan