Abbiamo alcuni test unitari che falliscono quando si esegue in modalità di rilascio in modalità debug. Se collego un debugger in modalità di rilascio, i test passano. C'è troppo codice per pubblicare qui, quindi sto solo cercando le migliori pratiche per il debug dei problemi relativi alla modalità di rilascio. Ho controllato:Il codice si comporta in modo diverso in modalità Release vs Debug
- direttive di preprocessore DEBUG e RELEASE ma non ne ho trovato.
- Conditional Methods
SOLUZIONE: In questo caso è perché ero paragonando variabili floating point per la parità. Non ho potuto cambiare i carri a decimale senza un importante refactoring così ho aggiunto un metodo di estensione:
public static class FloatExtension
{
public static bool AlmostEquals(this float f1, float f2, float precision)
{
return (Math.Abs(f1 - f2) <= precision);
}
public static bool AlmostEquals(this float f1, float f2)
{
return AlmostEquals(f1, f2, .00001f);
}
public static bool AlmostEquals(this float? f1, float? f2)
{
if (f1.HasValue && f2.HasValue)
{
return AlmostEquals(f1.Value, f2.Value);
}
else if (f1 == null && f2 == null)
{
return true;
}
return false;
}
}
Un paio di domande. 1. Che tipo di errori riesci a dare alla domanda un po 'di "sapore"? 2. Hai controllato i metodi condizionali? –
Il problema principale è che il metodo Equals restituisce false. Tuttavia, se prendo ogni affermazione individualmente, tutti ritornano veri. Se tento di collegare un debugger, il problema scompare. –
È in virgola mobile (tipo di dati doppio ecc.)? – stefan