Visual Studio调试器与我的代码不同步

时间:2019-07-19 19:53:18

标签: c# unit-testing debugging mstest visual-studio-2019

我修改了一些代码并设置了一个断点,但是当调试器击中该断点时,它会发疯并仍然运行旧代码!

这是原始代码:

/// <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;
}

我在修改的行上设置了断点(检查字符串值),当调试器到达该行时,它会忽略我添加的部分,即使{{1} }变量是一个字符串。

如果有问题,此代码是从MSTest单元测试中运行的。

1 个答案:

答案 0 :(得分:1)

当出于某种原因在运行项目之前未构建项目时,可能会发生这种情况,从而使调试器正在运行的代码不再与您正在查看的源代码相同。在“配置管理器”中查看并确保已选中“内部版本”以获取您正在使用的配置。