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

时间:2016-02-11 15:34:26

标签: vb.net visual-studio-2015

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

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

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

编辑,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")

我的编辑只需添加field11和heading11,然后保存。但代码最终看起来像这样:

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在我没有编辑的行上的逗号后插入了空格。

2 个答案:

答案 0 :(得分:2)

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

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&#34; < / strong>,并且以下文本是代码,因此它会被更改(在这种情况下,关键字是大写的)。

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

我在编辑字符串时必须更加小心。

答案 1 :(得分:0)

可能不是你的错。

我见过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 formatting Strings as VB.NET code中,它建议取消选中工具&gt;选项&gt;文本编辑器&gt;基本&gt;高级&gt;漂亮的列表(重新格式化)代码,但我不愿意关闭所有有用的好东西。

感觉就像VS 2015中的一个错误。在2015年之前的16年中,从未见过使用VS的早期版本。