Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Visual Studio调试器与我的代码不同步_C#_Unit Testing_Debugging_Mstest_Visual Studio 2019 - Fatal编程技术网

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

C# Visual Studio调试器与我的代码不同步,c#,unit-testing,debugging,mstest,visual-studio-2019,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(par

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

以下是原始代码:

/// <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;
}
//
///为指定的值创建新值。
/// 
/// 
公共CommaSeparatedValue(参数对象[]值)
{
列表=新列表();
foreach(值中的var值)
{
if(值为IEnumerable)
{
foreach(变量项在(IEnumerable)值中)
{
列表。添加(擦洗(项目));
}
}
其他的
{
列表。添加(擦洗(值));
}
}
_列表=列表;
}
我把它改成:

/// <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;
}
//
///为指定的值创建新值。
/// 
/// 
公共CommaSeparatedValue(参数对象[]值)
{
列表=新列表();
foreach(值中的var值)
{
如果(值是IEnumerable&!(值是string))/!!!-我在这里更改了这一行
{
foreach(变量项在(IEnumerable)值中)
{
列表。添加(擦洗(项目));
}
}
其他的
{
列表。添加(擦洗(值));
}
}
_列表=列表;
}
我在修改的行上设置了断点(检查字符串值),当调试器点击该行时,它会忽略我添加的部分,并继续运行到“if”块,即使
value
变量是字符串


如果重要的话,这段代码是从MSTest单元测试运行的。

由于某种原因,在运行项目之前没有生成项目,因此调试器运行的代码不再与您正在查看的源代码相同时,可能会发生这种情况。查看Configuration Manager,确保选中了“Build”以查看您正在使用的配置。

在黑暗中拍摄,但是您是否尝试查看Visual Studio是否有任何更新?我知道如果我有一段时间没有更新它,我的行为有时会很奇怪。我有一种感觉,当您正在调试的项目在您修改代码后没有生成时,我看到了这种行为。查看Configuration Manager并确保选中了“build”。进行清理,然后重新生成。无法在MsTest(.net core)项目模板中重现相同的问题。请:1。确保处于调试模式,并且不要检查调试模式的优化代码。(Project=>Properties=>Build=>optimizecode)2.在调试
testexplorer
@peteraha中的测试项目之前,请重新构建项目,您说得对-单元测试项目不是解决方案构建的一部分!你为什么不把你的评论作为答案发出来,这样这个帖子就可以解决了