Jeff ha esordito parlando dei sui problemi all'ingresso: "Lei non è registrato!, vuole partecipare alle pre-conferences?" incredibile!, alla fine l'hanno fatto entrare...
Questa seconda parte è in gran parte dedicata al famoso problema "Dll Hell" e su come Microsoft ha finalmente cercato di risolverlo.
Si è parlato di Assembly Private e su come queste vengono cercate (probing) dal framework e delle Shared Assemblies (come e quando utilizzarle e come inserire un assembly nella GAC) e quanto importante sia la possibilità di avere multiple versioni della stessa assembly nella stessa macchina.
Richter ha anche descritto come Microsoft stessa si vittima del Dll Hell raccontando come alcune features dopo essere state totalmente implementate sono state alla fine rimosse da nuove versioni di Windows perchè incompatibili con alcune vecchie applicazioni oppure come Windows sia zeppo di 'tricks' per rendere compatibili le nuove versioni con alcune applicazioni.
Ha nominato ad esempio un trick applicato ad una vecchia applicazione, se Windows trova all'interno di una certa dir un file xxx.exe, per compatibilità switcha in 640x480!
Da un analisi del codice IL è nata un interessante discussione relativa a call e callvirt e sul motivo percui nel codice IL troviamo callvirt anche quando il metodo non è virtual.
Semplicemente perchè callvirt fa un type checking affichè il tipo passato non sia null (a differenza di call) e, in alcuni casi, vedi System.Object.GetHasCode(), il fatto che l'oggetto sia null genererebbe una NullRefenceException e per evitare questo si sfrutta la callvirt in sostituizione al più adatto call.