c# - 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 语句不会让我选择代码行(它只是选择它下面的右括号)。选择左括号会很奇怪。
else里面也有类似的情况。enumFieldsLength = 12 选择显得很奇怪(在代码之前选择了一些空格),但它不会让我选择 generateCode += ...,它只会把我踢到右括号。
此外,即使我仍在 for 循环内,调试器也会在循环外标记片段。看看这张图片,调试器以一种毫无意义的方式突出显示了循环外的部分语句。
发生了什么事,我该如何解决这个问题?我有 ReSharper,但我尝试禁用它并没有帮助。我还尝试清理解决方案并清理每个单独的项目,重建。“优化代码”未选中。
解决方案
我想到了。
我手动删除了 bin 和 obj 文件夹,然后手动重建了每个单独的项目。
另一方面,Visual Studio 在外部执行 git 操作时似乎会做一些奇怪的事情,比如随机删除 csproj 文件和 .sln 文件中的行。在我最近的 git 合并中,它看起来像是从 .sln 中删除了一个随机行。
我不是 100% 确定这条线导致它开始起作用(因为我在合并后做的其他事情工作正常,加上删除 bin 文件夹解决了它而没有我弄乱 sln),但不管我也恢复了那个改变. 我合并的人没有添加或删除任何文件,所以 sln 不应该改变(并且不在他们的分支上,这只是 Visual Studio 很奇怪)。
推荐阅读
- java - Spring Security - HTTP 状态 403 - 禁止 - 服务器理解请求但拒绝授权
- python - 我使用 random.shuffle 错误还是这是一个错误?
- ruby-on-rails - Rails 将多个表导出到 csv
- ruby-on-rails - Rails - 具有根 sluggable 路线的多个模型
- php - 使用类别名称与类别 ID 将值传递给 $_GET
- python - 非常奇怪的输出,用于我的文本提取程序
- visual-studio-2017 - 安装 VS 2017 社区时出现致命错误
- python - 熊猫:resample.apply 丢弃索引名称
- c - 如何在 ARM 中将返回的 uint8_u 转换为 GoString?
- vba - 如何优化 Range Set 和 .Value