Over the last few weeks I discovered that Smart Tags in Visual Studio 2005 just weren't working anymore, but since I did not have time to investigate this too much I never gave thought to what the cause might be. Today I stumbled upon not only the cause, but also
a fix! The culprit is the
May 2006 "Orcas" LINQ Preview (which is ultra-cool, by the way!!). Thanks
Raimond.
I was going through the DOTNET-CLR list earlier this morning, when I saw a post where someone needed simple help:
"I'd like to convert the Dictionary Values to a List<> anybody know any magic .net classes/code?"
That sounded like something I could whip up in a few seconds. Fired up VS2005, New C# Console App, and with simply the help of Intellisense I had the following lines in a matter of seconds:
Dictionary<int, int> dic = new Dictionary<int, int>();
List<KeyValuePair<int, int>> myList = dic.ToList<KeyValuePair<int, int>>();
I posted these in reply to the question, but too fast! As long as it would've taken to press Ctrl-Shift-B too fast. Even though intellisense popped up the ToList method conveniently, attempting to compile this would result in:
error CS0117: 'System.Collections.Generic.Dictionary<int,int>' does not contain a definition for 'ToList'
The people on this list alerted me to this fact immediately: That there is no such thing is a ToList method! Opening up the Object-browser to do a search for "ToList" yielded the following:

And sure - there is the very ToList method, inside mscorlib! And Dictionary extends System.Collections.Generic.IEnumerable<T>, which in turn extends System.Collections.IEnumerable, as seen above! Wow, isn't it insane how large and bloated IEnumerable has suddenly become?! I am certainly not going to implement all of that for my enumerable collections!!!
What is happening here is this - I have the LINQ Preview installed, which adds many extension methods onto IEnumerable; this in turn makes it possible to write those sweet LINQ queries. Unfortunately intellisense does not work of reflection on referenced assemblies, but rather off xml files for the BCL libraries (for performance reasons). I had a chat to Scott Nonnenberg, and he confirmed that, for the LINQ Preview, the compiler can ineed differentiate between project types, but not the C# Code Editing Integration. (For a minute there my world was upside down, and I thought I was totally nuts!)
Extension methods sure has the ability to make things look unfamiliar - Ian and myself have blogged about this before.
A mate pointed me to memoryx for memory upgrades. If you install the required ActiveX control they can inspect your hardware and tell you exactly what memory you need, and what your options are. Fair prices and speedy delivery too.