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

Visual Studio debugger is out of sync with my code

我修改了一些代码并设置了一个断点,但是当调试器到达那个断点时,它变得疯狂并且 运行 还是旧代码!

原代码如下:

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

我在我修改的行上设置了断点(检查字符串值),当调试器命中该行时,它忽略了我添加的部分并继续 运行ning 进入 "if" 即使 value 变量是一个字符串也会被阻止。

如果重要的话,此代码是 运行 来自 MSTest 单元测试。

当由于某种原因您的项目没有在您 运行 之前构建时,可能会发生这种情况,因此调试器 运行ning 的代码不再与您的源代码相同看着。在配置管理器中查看并确保选中 'Build' 以查找您正在使用的配置。