VB.Net 损坏的字符串 - IDE 错误地将字符串解释为代码



今天我打开了一个Visual Basic项目,该项目有几行声明一些字符串,其中包含逗号分隔的数据。我修改了其中一个字符串,重建并关闭了项目。当我来测试它时,出现了一个错误。当我查看代码时,我发现我修改的字符串之后的字符串也发生了变化 - 它们在逗号后插入了空格。

有没有人看到普通字符串错误地应用了 IDE 在 Visual Studio 2015 中的格式?

似乎字符串的格式就像代码一样。我怀疑这与字符串插值有关,尽管这些是不使用它的遗留项目。

编辑,FWIW 代码与此类似,我已经重命名了字段和标题以尽量保持简短。

fullColumnMappingsBuilder.Append(",field1,field2,field3,field4,field5,field6,field7,field8,field9,field10")
fullColumnHeadingsBuilder.Append(",heading1,heading2,heading3,heading4,heading5,heading6,heading7,heading8,heading9,heading10")
If clientCode = "ML" Then
   fullColumnMappingsBuilder.Append(",mlField")
   fullColumnHeadingsBuilder.Append(",mlHeading")
End If
defaultColumnMappingsBuilder.Append(",morefields1,morefields2,morefields3,morefields4")
defaultColumnHeadingsBuilder.Append(",moreHeadings1,moreHeadings2,moreHeadings3,moreHeadings4")

我的编辑是简单地添加字段 11 和标题 11,然后保存。但是代码最终看起来像这样:

fullColumnMappingsBuilder.Append(",field1,field2,field3,field4,field5,field6,field7,field8,field9,field10,field11")
fullColumnHeadingsBuilder.Append(",heading1,heading2,heading3,heading4,heading5,heading6,heading7,heading8,heading9,heading10,heading11")
    If clientCode = "ML" Then
       fullColumnMappingsBuilder.Append(", mlField")
       fullColumnHeadingsBuilder.Append(", mlHeading")
    End If
defaultColumnMappingsBuilder.Append(", morefields1, morefields2, morefields3, morefields4")
defaultColumnHeadingsBuilder.Append(", moreHeadings1, moreHeadings2, moreHeadings3, moreHeadings4")

问题是 IDE 在我未编辑的行的逗号后插入了空格。

,我想我知道我是怎么做到的。如果你从这样的东西开始:

Public Class Class1
  Sub New()
    Dim string1 As String = "Hello there world asdfj asldfkja sad "
    Dim string2 As String = "some code like words dim private as object sub"
  End Sub
End Class

我想我一定是从 string1 的声明中删除了第一个双引号字符,然后将文本光标的位置移动到不同的行。在以前版本的 Visual Studio 中,IDE 会将第一行标记为错误。

现在我们有多行字符串,它认为你有一个多行字符串,从第一行末尾的引号一直到 string2 As String">,并且下面的文本是代码,所以它被更改了(在这种情况下,关键字是大写的(。

 Dim string2 As String = "some code Like words Dim Private As Object Sub"

编辑字符串时,我只需要更加小心。

可能不是你的错。

我已经看到VS 2015会自动进行更改,与上述示例非常相似:

Dim string2 As String = "some code like words dim private as object sub"

。更改为:

Dim string2 As String = "some code Like words Dim Private As Object Sub"

这是在多行和单行字符串上,在我根本没有接触过的过程中,在一个.vb文件中,我正在更改其他过程中的字符串。 我发现VS这样做的唯一原因是因为我在签到前做了一个比较。

在Visual Studio中,将字符串格式化为 VB.NET 代码,它建议取消选中"工具">"选项">"文本编辑器">"基本">"高级"> 漂亮的代码列表(重新格式化(,但我不愿意关闭所有好东西。

对我来说,感觉就像VS 2015中的一个错误。 在 16 年之前使用 VS 的 2015 年中从未见过这种情况。

最新更新