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中的测试项目之前,请重新构建项目,您说得对-单元测试项目不是解决方案构建的一部分!你为什么不把你的评论作为答案发出来,这样这个帖子就可以解决了