我修改了一些代码并设置了一个断点,但是当调试器击中该断点时,它会发疯并仍然运行旧代码!
这是原始代码:
/// <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单元测试中运行的。
答案 0 :(得分:1)
当出于某种原因在运行项目之前未构建项目时,可能会发生这种情况,从而使调试器正在运行的代码不再与您正在查看的源代码相同。在“配置管理器”中查看并确保已选中“内部版本”以获取您正在使用的配置。