Come ho postato in precedenza, con Team Foundation Server 2012 abbiamo un potente strumento di instrumentation per le eccezioni: PreEmptive Analytics.
Ecco cosa serve per configurare PA lato client ed avere quindi l’applicazione pronta per collezionare i dati.
Dobbiamo aprire Dotfuscator:

Impostare l’eseguibile target per la nostra instrumentation:


Selezionare Analytics…


…ed aggiungiamo alcuni attributi:


Abbiamo dunque bisogno di un Application ID:


Ed impostiamo il SetupAttribute per impostare i metodi che vogliamo:


C’è solo da configurare l’ Endpoint: come impostazione di default, l’indirizzo è tfsserver:8000/Message/Endpoint.ashx


Il TeardownAttribute serve a ‘pulire’ il metodo in uscita;

Rimane solo la configurazione da Visual Studio:
Creiamo una nuova subscription:

Copincolliamo gli ID richiesti(Company and Application). L’impostazione più importante qui è il Threshold: settandolo a 1, registreremo un Incident ogni volta che l’eccezione viene sollevata.

Finito 