繁体   English   中英

Visual Studio 2017-在调试模式下无法查看变量

[英]Visual Studio 2017 - Cant view variables when in debug mode

我已经尝试解决这个问题已有一段时间了。

我在Visual Studio 2017中工作,并且有许多解决方案。 除调试变量外,每个调试变量中的每一个都向我显示变量及其值。 它运行完美。

我做了什么:

  • 在托管兼容模式下玩耍
  • 清理和重建以及所有这些基础知识
  • 删除本地解决方案,然后从Git重新获取
    • 使用相同解决方案的其他开发人员没有此问题
  • 尝试在VS2015和VS2019 Preview中调试解决方案

似乎无法解决此问题,我还有什么可以尝试的想法?

编辑 :澄清,我可以在调试时逐步执行代码,但是无法查看变量的值。

EditEdit :正在做一些测试,我有新的信息。 虽然是一个断点,但我看了几个变量。

  • public ActionResult Detail(Guid?id)>我可以查看id的值
  • SomeObject item = someobjectRepository.GetItem(id).SingleOrDefault()>获取项目但无法查看其变量
  • 稍后在代码foreach(item.Subitems中的var subitem)>中,我可以查看subitem的值。

编辑编辑

无法全部查看的变量已过时。

为了测试姿势,我删除了模型的所有变量,因此完全为空,然后将其初始化

public MySuperModel()
{
}

初始化

MySuperModel model = new MySuperModel();

通过将鼠标悬停或添加到手表/快速手表来查看模型,会产生一条消息,表明它已过时。

等等,这很奇怪

屏幕截图-未显示 屏幕截图-未显示

屏幕截图-显示 屏幕截图-显示

List<ClassA> list = new List<ClassA>();
ClassA retVal = list.Where(o => o.MyProperty1 == 1).FirstOrDefault();

这里不会有异常(错误), retValnull,并且您将看不到类的属性或属性的值。

您所要做的就是将一些项目添加到列表中。

List<ClassA> list = new List<ClassA>();
list.Add(new ClassA() { MyProperty1 = 1, MyProperty2 = 2 }); //adding item
ClassA retVal = list.Where(o => o.MyProperty1 == 1).SingleOrDefault();

我已经找到了解决我问题的方法,但是我不知道它为什么起作用。

我会尽力解释。

我有一个包含IEnumerables的模型。

模型

public SuperModel()
{
      public IEnumerable<MemberObject> memberList1{get; set;}
      public IEnumerable<MemberObject> memberList2{get; set;}
}

控制者

public ActionResult Detail(Guid? id)
{
    //Model initialized
    SuperModel model =  GetTheModel();

    //Then there were 2 foreach loops throu my einumerables
    foreach(var item in model.memberList1)
    {
        //Do things
    }
    foreach(var item in model.memberList2)
    {
        //Do things
    }

}

如果我只在调试器中保留其中一个循环,那么调试器就中断了。

解决方法

public ActionResult Detail(Guid? id)
{
    //Model initialized
    SuperModel model =  GetTheModel();

    //Then there were 2 foreach loops throu my einumerables
    model.memberList1.ToList().Foreach((item) => 
    { 
        //Do Things
    });
    model.memberList2.ToList().Foreach((item) => 
    { 
        //Do Things
    });

}

我不知道为什么使用.ForEach方法有效而使用经典的foearch()循环无效。 但是,如果有人遇到类似问题,希望对您有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM