do more with less
news, esperienze, esempi da condividere e qualcosa su di me

sabato 20 gennaio 2007

Windows Communication Foundation e gli add-in per Visual Studio 2005

In questi giorni mi sto cimentando con la realizzazione di un add-in per Visual Studio 2005 che consumi i dati provenienti da un servizio realizzato con Windows Comminication Foundation (WCF). La creazione dell'add-in è di per se abbastanza agevole soprattutto se si parte dagli esempi che si hanno a disposizione dopo aver installato il Microsoft Visual Studio 2005 Automation Samples. I problemi arrivano quando si chiede qualcosa di più come, ad esempio, consumare un servizio WCF. La documentazione a riguardo è, al momento, poca e spesso imprecisa e quindi non è facile risolvere i vari problemi che si possono incontrare durante lo sviluppo. Per fortuna ci sono gli amici della community a cui chiedere aiuto ;-)
Nei giorni scorsi sono riuscito a risolvere un problema proprio grazie all'aiuto di Andrea Boschin, Davide Bedin e il mitico Raffaele Rialdi. Il mio add-in, infatti, continuava ad andare in eccezione nel momento in cui tentavo di connettermi al servizio. Il servizio funzionava se chiamato da altre applicazioni, la configurazione era correttamente inserita nel file app.config ma l'eccezione continuava a verificarsi e le sue indicazioni ci spingevano a credere che la configurazione non fosse corretta. Anche dopo aver verificato che la configurazione fosse assolutamente corretta e che il file fosse accessibile dall'add-in il problema non si risolveva. Quindi, dopo che io e Andrea ne avevamo provate di tutti i colori, grazie al suggerimento di Davide che ci consigliava di usare FileMon rafforzato dallo stesso Raffaele, abbiamo iniziato ad indagare se effettivamente il file di configurazione venisse utilizzato dal client del servizio. Ed ecco individuato il problema ! Il client cercava la configurazione nel file di configurazione di Visual Studio (devenv.exe.config) invece che in quello dell'add-in. E' quindi bastato inserire la parte di configurazione in quel file per risolvere il problema.
Certamente questa soluzione non è ottimale ma per il momento ci va bene così (l'add-in è a solo uso del nostro team di sviluppo). In futuro cercheremo di configurare il client in modo diverso al fine di evitare di dover toccare il file di configurazione di Visual Studio.
L'esperienza fin qui raccolta mi permette di suggerirvi alcuni tips per risparmiare tempo quando deciderete di lavorare con gli add-in per Visual Studio 2005:
  1. Usate EnvDTE80.DTE2 se l'add-in che volete creare è destinato eslusivamente a Visual Studio 2005. Espone meglio le proprietà che potrebbero servirvi durante lo sviluppo.
  2. Per configurare l'add-in usate il file app.config. Attenzione però che questo non viene utilizzato da WCF.
  3. Se consumate un servizio WCF ricordatevi di inserire i parametri di configurazione nel file devenv.exe.config o trovate un sistema alternativo per istruire il vostro client su come consumare il servizio.
  4. Se il vostro add-in deve interagire con la soluzione fate attenzione perchè, in debug, l'add-in leggerà la soluzione in cui state sviluppando e da cui avete avviato il debug; quindi non quella che avrete aperto per testare il componente. La soluzione è di non usare il debug, in questi casi, chiudere il progetto di sviluppo ed aiutarsi con message box o altre vecchie tecniche di debugging che si usavano quando si lavorava con linguaggi non dotati di debug.