Sempre sulla scia della mia indagine sugli oggetti TeamFoundationServer creati mediante TeamFoundationServerFactory ho notato un altro dettaglio: se creiamo più oggetti con la Factory e poi si invoca Dispose su uno di essi tutti gli oggetti diventano inutilizzabili (perché sono banalmente lo stesso oggetto)!!!
TeamFoundationServer tfs1 = TeamFoundationServerFactory.GetServer("http://tfsrtmsp1:8080");
tfs1.Authenticate();
TeamFoundationServer tfs2 = TeamFoundationServerFactory.GetServer("http://tfsrtmsp1:8080");
tfs2.Authenticate();
tfs1.Dispose();
VersionControlServer vfs2 = (VersionControlServer)tfs2.GetService(typeof(VersionControlServer));
L'ultima linea, infatti, genera una bella NullReferenceException!
In effetti basta verificare che object.ReferenceEquals(tfs1, tfs2) é effettivamente true!
Quindi, se usate la Factory NON fate il dispose del TeamFoundationServer fino alla fine del programma a quando non siete certi che non ne usate più da nessuna parte!!!