2013-03-19 9 views
7

Quando abbiamo Add Service Reference, Visual Studio crea file XSD, come di seguito:Service Reference Aggiornamento: la generazione di file ridondanti

  1. MyService1.xsd
  2. MyService2.xsd
  3. MyService3.xsd

Lungo con i file wsdl e .svcmap.

Sul suo successivo aggiornamento, utilizzando Update Service Refernce, piuttosto che aggiornamento sopra i file di VS 2010 continuare ad aggiungere più & più file aggiungendo i loro nomi ..

  1. MyService31.xsd
  2. MyService32.xsd
  3. MyService33 .xsd ....

Questo crea problemi durante il check-in dei file & i build pianificati in ambiente di integrazione continua non riesce. :-(senza alcun errore sulla codifica lato.

Come si fa a gestire questo scenario? Possiamo forzare Visual Studio per forzare i file esistenti aggiornamento?

+0

È necessario riutilizzare i file come predefiniti, non è sicuro di cosa li stia causando per creare nuovi file ogni volta. Quale SVN stai usando?Forse i file vengono impostati in sola lettura e impediscono a Visual Studio di aggiornare i file? – JeremyK

+1

immagino che questo sia TFS –

+1

@JeremyK, @Clinton Usiamo 'IBM Clearcase' per il controllo della versione. Comunque penso che l'attributo readonly dei file non dovrebbe essere la ragione per generare nuovi file ... Poiché ci sono altri file readonly nelle soluzioni come ... 1. Reference.cs 2. Web.Config 3. file .svcmap .. Il comando Firma 'Service Reference Update' mi richiede di sovrascrivere/eseguire il checkout di questi file. – Abhijeet

risposta

0

Io preferisco usare svcutil sia per i metadati di generazione WSDL (+ XSD) e generando codice proxy

la cosa bella è che nessun 'dietro le quinte magia' accade,.. che si vede e controllare ogni aspetto

  • Creare un file cmd per ottenere il WSDL + XSD per il servizio. Esegui il cmd ogni volta che y la nostra interfaccia di servizio cambia. Aggiungi i file wsdl e xsd risultanti al controllo del codice sorgente come faresti con qualsiasi altra dipendenza esterna (ad esempio le dll di terze parti). Svcutil può estrarre i metadati da un URL o estrarlo da una dll .net se si dispone anche dell'assembly che implementa il servizio.

  • Creare un file cmd per (ri) generare il codice proxy. Eseguirlo ogni volta che cambiano i metadati del servizio. Aggiungi il file .cs risultante al tuo progetto.

Il file cmd sarebbe simile a questa. È possibile definire la mappatura dello spazio dei nomi, il serializzatore, l'utilizzo della raccolta, ecc. Controllare l'aiuto di svcutil. ....

svcutil.exe \ Riferimenti \ MyService \ * WSDL \ Riferimenti \ MyService \ * xsd /namespace: *, MyNamespace /out:.\Source\MySubfolders\MySeviceProxy.cs /serializzatore: DataContractSerializer /ct:System.Collections.Generic.List`1

+0

In realtà non lo aiuta con la sua domanda. – JeremyK

+0

Sì, non risponde alla domanda perché lo studio visivo lo fa, ma suggerisce una soluzione alternativa per gestire i metadati del servizio, che può aiutare a evitare il problema dei nomi dei file xsd. Non penso che accadrà se svcutil è usato direttamente. – Vizu

+1

Non dovrebbe accadere in primo luogo. Io uso entrambi i metodi e hanno i loro compromessi, ma non ho mai visto quello che sta vivendo e probabilmente non è la soluzione, ma qualcos'altro che si frappone. Spingerlo verso il basso una soluzione diversa invece di risolvere il problema è uno spreco di tempo imo. Se non è necessario apportare modifiche personalizzate all'interfaccia, fare clic con il pulsante destro del mouse e aggiornare è molto più conveniente, quindi è necessario eseguire strumenti esterni e copiare/incollare ogni volta che si effettua un aggiornamento. – JeremyK

0

Prima di tentare di aggiornare il riferimento al servizio, checkout il generato automaticamente i file in modo VS ha accesso a tali file. Credo che i tuoi file vengano bloccati, impedendo allo studio visivo di poterli modificare. Ciò comporterebbe ciò che stai vedendo.

+0

Ho controllato l'intera cartella di riferimento del servizio .. In precedenza ho usato i file 'MyService1.xsd, MyService2.xsd, MyService3.xsd', In aggiornamento ho potuto vedere file come' MyService31.xsd ... MyService33.xsd' – Abhijeet

Problemi correlati