C# 在VisualStudio即时窗口中清除堆栈

C# 在VisualStudio即时窗口中清除堆栈,c#,.net,visual-studio-2012,C#,.net,Visual Studio 2012,使用即时窗口时,必须区分运行时和设计时 如果我在设计时使用即时窗口,并在堆栈中放置一个局部变量: string s = "test"; VS将启动编译器并在堆上创建一个名为s的新变量,并将指向该变量的指针放置在它在设计时使用的临时堆栈框架上。(至少我认为它是这样工作的,至少简化了。不过,如果我错了,请纠正我) 从现在起,在运行应用程序或关闭VS: int s = 12; A local variable named 's' is already defined in this scope 我

使用即时窗口时,必须区分运行时和设计时

如果我在设计时使用即时窗口,并在堆栈中放置一个局部变量:

string s = "test";
VS将启动编译器并在堆上创建一个名为s的新变量,并将指向该变量的指针放置在它在设计时使用的临时堆栈框架上。(至少我认为它是这样工作的,至少简化了。不过,如果我错了,请纠正我)

从现在起,在运行应用程序或关闭VS:

int s = 12;
A local variable named 's' is already defined in this scope
我可以使用contextmenu清除即时窗口,但这实际上只是清除窗口本身。我的局部变量仍然保留在堆栈上

我想知道,是否真的没有办法清除我以前在即时窗口中创建的所有变量


(我使用的是VS 2012 SP1 Prof.但我想每个版本的VS问题都是一样的)

我不知道visual studio中到底发生了什么,但似乎VS在vshost.exe进程中保留了一个编译版本


如果您终止关联进程(即WindowsFormsApplication1.vshost.exe*32),它将清除堆栈并允许您重用变量,而无需重新启动。中介绍了设计时调试。这是相当少的具体帮助,以解决您的问题。Visual Basic代码的示例并非完全出于偶然,这是旧版本VB6 IDE中的一个重要特性。当然,在那个编程环境中更实用,因为编写过程代码很常见,很容易用即时窗口进行测试和调试


我能想到的清除解释器执行状态的最快方法是按F11(Debug+Step-Into)并取消调试。或者键入>Debug.StepInto和>Debug.stopdebug。不太理想。

好吧,我会被诅咒的……我想我从来没有想过在应用程序不运行时尝试使用即时窗口。。。