【发布时间】:2020-07-03 08:11:47
【问题描述】:
我在 Visual Studio 中有一个非常奇怪的行为,我无法解释。
在一个更大的项目中,我有一个类,看起来像这样:
Public Class DatabaseDescription
Inherits DatabaseDescriptor
Private _tableNames As List(Of String)
...
Public ReadOnly Property TableNames As IEnumerable(Of String)
Get
If (_tableNames Is Nothing) Then
_tableNames = Me.GetTableNames
End If
Return _tableNames
End Get
End Property
Private Function GetTableNames() As IEnumerable(Of String)
Dim result As New List(Of String)
...
Stop
Debug.Print("Hallo")
...
result.Add(tableName & "_Test")
...
Return result
End Function
...
End Class
类变量_tableNames只用在属性TableNames中,别处没有。
我在一开始就在函数GetTableNames 中设置了一个断点,所以,如果这个函数被调用,我的断点应该被击中。
我在属性TableNames的开头设置了一个断点。
我在函数GetTableNames 中添加了一个明确的Stop 和一个Debug.Print。
我为每个表名添加了一个“_Test”,以确保我使用的是正确的代码。
你猜怎么着……当我运行我的代码时,TableNames 被填满,而我的断点从未被击中。显式的Stop 也不起作用。但是我看到了我的Debug.Print,并且每个表名的末尾都有一个“_Test”。
我的解决方案中的所有项目都处于调试配置中。当我从输出文件夹中删除有问题的库时,它会重新创建。重新启动 Visual Studio 也无济于事。将“_Test”更改为“_Test2”并更改Debug.Print 文本会立即生效,但断点和显式Stop 将不起作用。当我第一次故意访问时,同一类中的其他断点,甚至是属性中的断点。
有什么想法吗?
【问题讨论】: