Negli ultimi mesi mi sto occupando della migrazione di un applicativo client server dalla versione 1.1 alla versione 3.5. Per mia sfortuna il codice originale è stato scritto in VB.Net e non ci sono le intenzioni per migrarlo a c#.

Tra giovedì e venerdì ho perso "x" ore nel cercare di individuare un baco che proprio non aveva voglia di farsi stanare, finché qualcuno (che in parte aveva già effettuato la migrazione di parte del codice) mi ha inidirizzato correttamente:

Problema:

VB.Net + Persone non propriamente attente al codice hanno riempito I sorgenti di :

if str is String.Empty

Questo, in ottica 1.1 controllava se la stringa era vuota. In compilazione, il FW 3.5 non da nessun tipo di errore (naturalmente), ma veniamo alla parte più subdola. Compilando e facendo girare l'applicazione in debug (sempre 3.5) non viene sollevata nessuna eccezione, il codice continua a fare esattamente quello che faceva prima e tutto "Sembra" funzionare correttamente.

Facciamo finalmente il deploy nei nostri server di integration, e non funziona più nulla, quello snippet non torna lo stesso risultato che torna in debug.

Non so cosa succeda, se è qualche SP del framework installato sulle macchine di DEV e non su quella di Integration (anche se sembra proprio di no), ho escluso il deploy a 64 bit (non funziona nemmeno se viene compilato a 32bit) e non ho una risposta al "Perchè non funziona", sta di fatto che non funziona.

Conclusione:

Se state facendo una migrazione di codice di VB1.1 in VB3.5 e chi ha scritto in precedenza il codice era solito usare quel costrutto ... controllate!!!