VS2015调试器显示错误的值?

时间:2015-10-02 13:40:47

标签: c# visual-studio visual-studio-2015 visual-studio-debugging

编辑:当我在Visual Studio 2013中运行此代码时,调试器显示Utc,而不是Local。它是Visual Studio 2015调试器中的一个错误。

编辑:已经采取了代码并放入独立的控制台应用程序,但无法在VS的任何一个版本中重现。长号。

有人可以向我解释一下你在这个截图中看到的内容是什么吗?!

  1. 在第298行,endingTimePeriodStartDate被重新定义为其Date值,但设置为DateTimeKind.Utc
  2. 在第300行,如果endingTimePeriodStartDate实际上不是DateTimeKind.Utc,则会引发异常。
  3. 第305行的调试器断点被命中,这意味着第302行没有抛出异常,这意味着endingTimePeriodStartDate.Kind == DateTimeKind.Utc
  4. (我在第305行之前也做了System.Diagnostic.Debug.WriteLine(endingTimePeriodStartDate.Kind)并在输出窗口中输出了“Utc”。
  5. 当我在Locals and Watch调试器窗口中查看endingTimePeriodStartDate时,当我将鼠标悬停在变量上时,Kind属性显示DateTimeKind.Local
  6. enter image description here

1 个答案:

答案 0 :(得分:2)

通常调试器会显示错误的行号,如果它运行的是不同版本的dll(以前的版本)而不是代码显示的版本,则会进入旧代码。发生这种情况

  • 当有某种缓存时
  • 当前运行版本未正确关闭或仍在另一个进程中运行时。
  • 当Visual Studio未指向正确的代码时

通常要解决这个问题,你应该:

(首先只尝试"干净"和"重建")

  1. 停止所有运行或调试Visual Studio项目。
  2. 关闭所有Visual Studio解决方案和窗口,以便Visual Studio不运行。
  3. (如果下一步没有做到这一点,那么下次再重新启动计算机,然后再继续下一步)
  4. 仅重新打开您需要运行的解决方案。点击"清洁解决方案"。然后"重建解决方案"。
  5. 检查这是否解决了问题。

    1. 手动删除bin文件夹:(如果清理/重建没有工作)
    2. 5.1如果您害怕,请备份整个源目录。一切正常后,删除备份......

      5.2手动进入依赖项目(在#34;错误的代码显示"项目中引用),并在每个项目中,进入obj并进入bin文件夹并删除自动生成的所有内容从那里创建 - 换句话说,你没有手动放在那里的一切。通常这就是一切。不用担心,visual studio将重新创建Debug和Release目录并填充它们。

      删除项目的obj和bin。

      重建一切。