VS即时窗口-该名称在当前上下文中不存在

本文关键字:上下文 不存在 窗口 VS | 更新日期: 2023-09-27 17:57:32

我在代码的某些部分遇到了这个问题,我不知道是什么原因造成的。

我有一个代码块,我在其中设置了一个断点。如果我使用光标并将光标悬停在一个变量上,我通常可以导航该变量的内容和值。

虽然有些变量,我无法查看内容,但什么都没有出现。

此外,如果我尝试调查那些我不能通过即时窗口的人,它会告诉我The name 'temp' does not exist in the current context

我真的很恼火为什么会发生这种情况,一些整数而不是其他整数,一些类对象而不是其他相同类型的对象。

关闭Visual Studio并重新启动并不能解决问题。

我在调试中运行,没有优化。

只是想在这个问题上寻求一些帮助,所以提前谢谢。

下面是一个发生代码的示例,没有特殊代码或委托。即使只有几行代码,它也可能发生在程序的随机部分。

segs2D = ConvertSegmentsTo3DLines(segs2D);
IList<DSegment2D> segs3D = DSegment2D.Duplicate(segs2D);
TransformSegments(segs3D, transform);
foreach (var seg in segs3D)
    MoveSegmentToSolid(seg, moveNormal, solid, false);
Dictionary<double, Strategy> strategiesDic = new Dictionary<double, Strategy>();
double d1 = (double)(segs3D[0].GetP1Tag() ?? 0);
double d2= (double)(segs3D[0].GetP2Tag() ?? 0);
foreach (DSegment2D seg in segs3D)
{
    d1= (double)(seg.GetP1Tag() ?? d1);
    d2= (double)(seg.GetP2Tag() ?? d2);
    ...Stuff
}

VS即时窗口-该名称在当前上下文中不存在

此外,如果我尝试调查那些我不能通过即时窗口的人,它会告诉我名称"temp"在当前上下文中不存在

尝试使用方法的全名

例如:

namespace.class.method();

而不是

class.method();

即时窗口似乎还依赖于当前选定的文件/项目。

希望这能有所帮助Mathias

我也遇到了类似的问题。我以为我在调试,但还有一个更简单(但重要)的步骤。当"解决方案配置"设置为"调试"时,我还必须单击"调试"旁边的向下箭头并选择"Configuration Manager…",然后在相应的弹出窗口中,"配置"仍设置为"发布"——我必须将其更改为"调试"并单击"关闭"按钮。从那里重新运行允许我在调试时查看所有变量。

可能在您到达断点的代码块中还没有声明或初始化变量(即执行还没有那么远)。

例如,当您遇到断点时,您所描述的悬停和立即窗口问题都会发生在以下代码块中的bar上:

public class Whatever
{
    public void DoSomething()
    {
        string foo = "blah"; // Breakpoint hit and execution stopped here.
        // Do something.
        DoSomethingElse();
    }
    public void DoSomethingElse()
    {
        string bar = "yack";
        // Do something else.
    }
}

事实证明,该方法的复杂性和缩进数量在当时造成了这个问题。从那以后,我简化并运行了大部分原始代码,不再有这个问题。我还升级到了VS2012,这可能也会有所帮助。