Visual Studio 调试器随机跳过行

Visual Studio debugger randomly skipping over lines

        string generatedCode = "";
        generatedCode += "            ";
        int enumFieldsLength = 12; // Set equal to number of spaces in current indentation

        for(int i = 0; i < dbTableList.Count; i++)
        { // enum
            generatedCode += dbTableList[i].DbField;
            if(i != dbTableList.Count - 1)
            {
                generatedCode += ",";

                enumFieldsLength += dbTableList[i].DbField.Length + 2; // 2 for the comma + space
                if(enumFieldsLength <= SourceCode.MAX_CHARACTERS_PER_LINE)
                {
                    generatedCode += " "; // Add space after trailing comma
                }
                else
                {
                    enumFieldsLength = 12;
                    generatedCode += "\r\n            "; // New line because exceeded maximum allowed characters per line
                }
            }
        }

我这里有这个简单的代码。 运行 Visual Studio 2019. Visual Studio 表现异常。 在 else 条件中,"enumFieldsLength = 12" 被调试器完全跳过。即使我将它移到字符串连接语句之后,它也会完全跳过它。 此外,调试器标记中的当前行变成了一个奇怪的块。

在一个可能相关的注释中,相关的 if 语句不会让我 select 代码行(它只是 select 它下面的右括号)。 select 左括号显得很奇怪。

else 里面也有类似的情况。 enumFieldsLength = 12 selection 看起来很奇怪(selects 一些 space 在代码之前),但它不会让我 select generatedCode += ...,它只是把我踢到最后的支架。

当我实际调试时,当前行指示符在这些行附近变得很奇怪。

此外,即使我还在for循环内,调试器也会在循环外标记片段。看看这张图片,其中调试器以一种毫无意义的方式突出显示了循环外的部分语句。

这是怎么回事,我该如何解决?我有 ReSharper,但我尝试禁用它但没有帮助。 我还尝试清理解决方案并清理每个单独的项目,重建。 "Optimize code" 未选中。

我想通了。

我手动删除了 bin 和 obj 文件夹,然后手动重建了每个单独的项目。

另一方面,Visual Studio 在外部执行 git 操作时似乎会做一些奇怪的事情,比如随机删除 csproj 文件和 .sln 文件中的行。在我最近的 git 合并中,它似乎从 .sln 中删除了随机行。

我不是 100% 确定这条线会导致它开始运行(因为我在合并之后做的其他事情都很好,加上删除 bin 文件夹解决了它,而我没有弄乱 sln),但不管我也恢复了该更改。与我合并的人没有添加或删除任何文件,所以 sln 不应该改变(而且不在他们的分支上,只是 Visual Studio 很奇怪)。