Visual Studio调试器随机跳行

问题描述 投票:0回答:1
        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语句不会让我选择代码行(它只是选择它下面的收尾括号)。而选择开头的括号就会出现奇怪的情况。enter image description here

enumFieldsLength=12的选择显示出奇怪的情况(选择代码前的一些空格),但它不会让我选择generatedCode+=......,它只是把我踢到收尾括号。enter image description here

当我真正调试的时候,当前行指示器在这些行附近变得很奇怪。enter image description here

此外,即使我还在for循环内,调试器也会在循环外做标记。请看这张图,调试器以一种毫无意义的方式高亮了循环外的部分语句。enter image description here

这是怎么回事,我该如何解决这个问题?我有ReSharper,但我试过禁用它,但没有帮助.我也试过清理解决方案和清理每个单独的项目,重建。"优化代码 "没有被选中。

c# visual-studio visual-studio-debugging
1个回答
1
投票

我想明白了,我手动删除了bin和obj。

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

另外,Visual Studio在外部进行git操作时,似乎会做一些奇怪的事情,比如随机删除csproj文件和.sln文件中的行。在我最近的git合并中,它看起来像是从.sln文件中随机删除了一行。enter image description here

我不是100%确定是这行导致它开始行动(因为我在合并后做的其他事情都很好,再加上删除bin文件夹解决了这个问题,而没有对sln进行破坏),但无论如何,我也恢复了这个改变。和我一起合并的人没有添加或删除任何文件,所以sln不应该改变(他们的分支上也没有,只是Visual Studio很奇怪)。

© www.soinside.com 2019 - 2024. All rights reserved.