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 很奇怪)。
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 很奇怪)。