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' 以查找您正在使用的配置。
我修改了一些代码并设置了一个断点,但是当调试器到达那个断点时,它变得疯狂并且 运行 还是旧代码!
原代码如下:
/// <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' 以查找您正在使用的配置。