Я изменил код и установил точку останова, но когда отладчик достигает этой точки останова, он сходит с ума и все равно запускает старый код!
Вот исходный код:
/// <summary>
/// Creates a new <see cref = "CommaSeparatedValue"/> for the specified values.
/// </summary>
/// <param name = "values"></param>
public CommaSeparatedValue(params object[] values)
{
List<string> list = new List<string>();
foreach (var value in values)
{
if (value is IEnumerable)
{
foreach (var item in (IEnumerable)value)
{
list.Add(Scrub(item));
}
}
else
{
list.Add(Scrub(value));
}
}
_List = list;
}
И на что я его изменил:
/// <summary>
/// Creates a new <see cref = "CommaSeparatedValue"/> for the specified values.
/// </summary>
/// <param name = "values"></param>
public CommaSeparatedValue(params object[] values)
{
List<string> list = new List<string>();
foreach (var value in values)
{
if (value is IEnumerable && !(value is string)) // !!! - I changed this line here
{
foreach (var item in (IEnumerable)value)
{
list.Add(Scrub(item));
}
}
else
{
list.Add(Scrub(value));
}
}
_List = list;
}
Я установил точку останова на строке, которую я изменил (проверив строковое значение), и когда отладчик достигает этой строки, он игнорирует часть, которую я добавил, и продолжает работать в блоке «если», даже если переменная value является строкой.
Если это имеет значение, этот код запускается из модульного теста MSTest.
У меня такое ощущение, что я видел такое поведение, когда проект, который вы отлаживаете, не создается после того, как вы изменили код. Загляните в Диспетчер конфигураций и убедитесь, что установлен флажок «Сборка».
Сделайте очистку, затем перестройте.
Не удается воспроизвести ту же проблему в шаблоне проекта MsTest (.net core). Пожалуйста: 1. Убедитесь, что вы находитесь в режиме отладки и не устанавливайте флажок Оптимизировать код для режима отладки. (Проект => Свойства => Сборка => Оптимизировать код) 2. Пересоберите проект перед отладкой тестового проекта в test explorer
@peterG ага, вы правы - проект модульного тестирования не был частью сборки решения! Почему бы вам не опубликовать свой комментарий в качестве ответа, чтобы этот пост можно было решить? :)
@ekolis На самом деле недостаточно быть ответом, а не комментарием, но если вы настаиваете. . .
@peterG Это ответило на мой вопрос, поэтому я думаю, что это квалифицирует его как ответ :)





Это может произойти, когда по какой-то причине ваш проект не собирается до его запуска, так что код, выполняемый отладчиком, больше не совпадает с исходным кодом, который вы просматриваете. Загляните в Диспетчер конфигураций и убедитесь, что для используемой конфигурации установлен флажок «Сборка».
Снято в темноте, но пытались ли вы узнать, есть ли какие-либо обновления в вашей Visual Studio? Я знаю, что мой иногда ведет себя странно, если я не обновлял его какое-то время.