severe frustration research, I was able to discover how to repro the crash in Visual Studio 2005 yesterday. It is actually quite simple to do. You need a new VB.NET project and two With statements, one nested within the other. That’s it. Then you click on the second With object.
Here, I’ll show you how!
Public Class Form1 Public Shared Sub Main() Application.Run(New Form1) End Sub Public Sub New() ' This call is required by the Windows Form Designer. InitializeComponent() ' Add any initialization after the InitializeComponent() call. Dim p As New Person() With p ' CRASHHERE: If you want to crash, take your mouse and ' click inside .StreetAddress.... BOOM! With .StreetAddress .Street = "123 BOOM" End With End With End Sub Public Class Person Private _streetAddress As New Address Public ReadOnly Property StreetAddress() As Address Get Return _streetAddress End Get End Property End Class Public Class Address Private _street As String Public Property Street() As String Get Return _street End Get Set(ByVal value As String) _street = value End Set End Property End Class End Class
There, that was easy, huh? (In case you’re not seeing it, look for the CRASHHERE note.)
Kids, don’t try this at home.
Chances are, it will work for you anyway. I just checked with one of my co-workers and it works just fine for him. Great.