У нас есть некоторые модульные тесты, которые не работают при запуске в режиме Release vs debug mode. Если я присоединяю отладчик в режиме деблокирования, тесты проходят. Для публикации здесь слишком много кода, поэтому я действительно ищу лучшие методы в отладке проблем режима выпуска. Я проверил для:Код ведет себя по-разному в режиме Release vs Debug
- Директивы препроцессора DEBUG и RELEASE, но я не нашел их.
- Conditional Methods
РЕШЕНИЕ: В этом случае, потому что я сравнения переменных с плавающей точкой на равенство. Я не мог изменить поплавки в десятичной системе без главного рефакторинга, поэтому я добавил метод расширения:
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;
}
}
Пара вопросов. 1. Какие неудачи вы получаете, чтобы задать вопрос «вкус»? 2. Вы проверили условные методы? –
Основная проблема заключается в том, что метод Equals возвращает false. Однако, если я принимаю каждое утверждение отдельно, все они верны. Если я попытаюсь подключить отладчик, проблема исчезнет. –
Связано ли это с плавающей точкой (тип данных double и т. Д.)? – stefan