Mi capita spesso di creare delle Web Application in ASP.Net (ovviamente, what else?) e di debuggarle da remoto.
Il debugging remoto devo dire che è davvero molto utile perchè spesso il problema non è completamente riproducibile in un ambiente di sviluppo, oppure perchè non è così facile ricreare lo stesso identico context.
Detto questo, una delle prime cose che ho trovato difficoltoso da fare quando ho cominciato a sviluppare WebPart (il discorso è valido per SPS2003 o MOSS2007 e loro wss, di seguito lo chiamerò semplicemente SharePoint), era proprio il debugging.
Non chiedetemi perchè lo posto solo ora, probabilmente è perchè la mia memoria è quella che è e quindi, ora che mi è venuto in mente lo scrivo.
Una WebPart è semplicemente un "componente" di una pagina di una web application e, in Sharepoint, si installa registrando l'assembly nella GAC del server web (in realtà non è l'unico modo possibile).
Quindi il tutto si riduce a: come debuggare un assembly registrato nella GAC da remoto?
La risposta è molto semplice: copiare il relativo file .pdb nella GAC.
Come?
Beh, questa è una cosa fattibile solo a riga di comando, dato che dall'explorer la GAC è renderizzata in modo poco usabile.
Quindi basta trovare in quale directory sia stato registrato il vostro assembly (un path tipo: "C:\WINDOWS\assembly\GAC\NomeAssembly\1.0.0.0__02f4c2d9cf100d9a>") e copiare anche il file .pdb per il debug.
TIP: nel caso di una WebPart non è possibile sovrascrivere i file nella GAC se sono in uso (ovvero se il web che lo utilizza è in uso), quindi occorre fermare IIS, copiare i file, e poi farlo ripartire.
Nell'ordine quindi:
c:\>iisreset /stop
c:\>copy nomeassembly*.* C:\WINDOWS\assembly\GAC\NomeAssembly\1.0.0.0__02f4c2d9cf100d9a
c:\>iisreset /start
A questo punto da Visual Studio (VS) si procede come sempre: menù Debug--> Attach to Process:
Come Qualifier dobbiamo selezionare il Server web sulla quale è installato SharePoint (Attenzione: deve essere configurato per il Remote Debugging!).
Da qui selezioniamo il processo di IIS (w3wp.exe) (come nelle pubblicità, lo screen shot sopra è a puro scopo dimostrativo, non c'è il processo di IIS perchè non ho disponibile un server in questo momento...) e poi clicchiamo Attach.
A quel punto, se qualcuno utilizza la WebPart sul sito e avete messo dei break-point, VS entrerà in modalità debug.
Buon debug!