1/ Edit and continue was a beloved feature of VB6 and was a priority for making migration onto .NET easy for RAD developers. EnC is magical when it works correctly. For web developers that are used to hot reloading, it enables that type of rapid development, but maintains state.
2/ Unfortunately, it is an extremely difficult feature to implement in a JIT'ed world as we discovered that with .NET 1.0. We actually had a version of EnC in the early releases of VS 2002.
3/ I'm fairly sure it persisted all the way up to Beta 1, though the history of when we removed it is a little hazy. The initial implementation wasn't coalescing. There were a huge number of bugs, it performed poorly, and it often corrupted the debuggee.
4/ In short, EnC was often Edit'n'Crash or Edit'n'Corrupt. Although we knew EnC was extremely compelling, we also knew we wouldn't get it right without a more time and a redesign. So the difficult decision was made to cut it.
5/ This was one of several features that VB6 offered that VB .NET (and C#) lacked with VS 2002/2003. I'll talk about our approach to adding many of those features back and enhancing them in VS 2005 w/ .NET 2, but for this thread, let's talk about EnC specifically.
6/ When we started .NET 2.0/VS 2005 work, EnC was part of a RAD pillar that the division was aligned behind. We didn't want to end up with the same late-breaking issues we had in .NET 1.0, so we started the work very early (in 2002/2003 we were already working on it).
7/ We also made scoping decisions very early, the two largest being that it would not support ASP .NET and that we were focused on VB .NET.
8/ The CLR would, of course, implement EnC so any managed language could take advantage of it, but in terms of the edits supported, IL constructs & idioms that were the focus, etc. that was all for VB. For C#, we were focused on implementing generics.
9/ I'll talk about that separately as generics was almost cut several times from .NET 2.0 and it was only through the heroic efforts of folks like Andrew Kennedy and @dsymetweets that it happened. There are many interesting stories for EnC, but I'll tell just one for now.
10/ As I said, VB was the focus for EnC in VS 2002 and we didn't plan to enable it for C#. It wasn't long before we had a lot of feedback from C# developers that they didn't understand why it wouldn't be enabled, and it was, for many of them, equally as important as generics.
11/ At PDC 2003 we talked about generics for C# and EnC support for VB, and it was the overwhelming amount of feedback we received from that conference, as well as the MVP program, that ultimately convinced us to redouble our efforts on C# EnC.
12/ Originally, we worked on a plan to enable it early in VS 2008 (Orcas). However, with a series of scoping decisions, we believed we could finish it before VS 2005 Beta 1 (though after our last coding milestone) if given the green light. EnC was a mammoth multi-team effort.
13/ It required work in the CLR, the language services, the project system, the compiler, and the debugger. Suffice it to say, adding a ton of work to all of those teams late in the cycle was a risky and initially unpopular option.
14/ @dougam, the dev manager for C# at the time, was instrumental in pushing this forward and believing that the team could pull it off. I remember one meeting distinctly. We needed to convince the CLR team that this was the right call, despite the lateness of the request.
15/ @jlzander was the decision maker for the CLR at the time (either the DM or the PUM I cannot remember), but either way, I put together a presentation with a focus on customer need, competition, and risks/work.
16/ The title was originally 'EnC for C#', but when we got to the conf room, we had to wait outside for the previous meeting to end.
17/ Jason and I had a brief chat, and I was suggesting that one of the huge benefits of moving forward would be a higher quality VB .NET EnC because we'd get additional validation of the CLR APIs.
18/ Jason suggested that maybe the presentation should be called 'the best damn VB test case period.' So, right before the meeting started when we got into the room, I changed the title - and ultimately, we decided to move forward :-)