为什么我的变量在动作方法中对调试器不可见?

时间:2012-06-28 18:16:49

标签: .net visual-studio visual-studio-2012

我有一个最奇怪的问题。为了快速测试实例化我的角色提供程序,我运行以下修改的操作方法:

public ActionResult Login()
{
    Educ8RoleProvider p = new Educ8RoleProvider();
    var model = new LoginModel();
    return View(model);
}

角色提供者或多或少看起来像这样:

public class Educ8RoleProvider : RoleProvider, IDisposable
{
    private readonly IMemberRoleRepository _memberRoleRepository = new MemberRoleRepository();

    public Educ8RoleProvider()
    {
    }
}

Login中的代码执行时没有任何例外,但是当我在行var model = new LoginModel();上设置断点时,变量p已经消失。我试图在p上放置一个快速计时遇到同样的错误,因为我试图在即时窗口中检查它:

The name 'p' does not exist in the current context

今天早上我从VS11 Beta顶级VS2012 RC升级。我不知道这可能是由于某个地方或某个地方的新设置。

ADDED:我发现我已经以某种方式将我的Debug配置偏离到基于发布的版本。

2 个答案:

答案 0 :(得分:0)

我的猜测是它已经被优化了 - 毕竟,你不是使用来做任何事情。

我希望它在调试版本中没问题,但是对于优化版本而言。 (当然,仍然应该调用构造函数。)

我怀疑你是否应该使用它,如果你不打算使用它,请注意 - 它至少 代码味道。

如果这是“实例化[你的]角色提供者”的快速测试,我可能会推荐单元测试吗? :)

答案 1 :(得分:0)

怪异。唯一让人想到的是,VS2012可能会在上次引用变量时将变量超出范围。您是否尝试过一行来访问p,然后看看它是否允许您观看它?