我正在运行一个dll的单元测试。
[TestMethod]
public void Test1()
{
List<MyObject> a = GetData();
}
当我尝试将其更改为以下内容时工作正常但是
[TestMethod]
public void Test1()
{
List<MyObject> b = GetData();
List<MyObject> a = GetData();
}
我遇到的问题是,当我到达b上的断点或者它说b在当前上下文中不存在时。但同一条线适用于我的同事。
我已经重新启动了visual studio并清理了解决方案并重建了它。 有人有想法吗?
答案 0 :(得分:3)
如果您正在调试以发布模式/使用&#39;优化代码&#39;编译的版本,则会发生这种情况。国旗集。
这是因为如果变量知道它们永远不会被使用,那么编译器可以自由地将变量从范围中取出,而调试模式只要它们在语言范围内是范围内的,就会保留变量。
由于b(和a)从未在您的代码中使用,因此编译器是免费的,在发布模式下将代码视为:
[TestMethod]
public void Test1()
{
GetData();
GetData();
}
确实如此。