First time here? Check out the site's "greatest hits" or read a post from the archives. Feel free to leave a comment or ask a question, and consider subscribing to the latest posts via RSS or e-mail. Thanks for visiting!
« If your method can't do what it's name p... | Main | The Five Second Rule - Does it Apply Int... »

When you install .NET 3.5 on your system, while the .NET CLR is the same and runs the same, there's some additional Properties and Methods that were added to the Base Class Libraries in order to make some 3.5 features like LINQ work as well as fix a few customer issues.

Daniel Moth has a very nice diagram explaining what "RedBits" and "GreenBits" mean.

"When we say red bits, those are Framework bits that exist in RTM today i.e. NetFx v2.0 and NetFx v3.0...When we say green bits, we mean brand new assemblies with brand new types in them. These are simply adding to the .NET Framework (not changing or removing) just like Fx 3.0 was simply adding to v2.0 without changing existing assemblies and without changing the CLR engine."

Krzysztof has a blog post about these new (kinda obscure) APIs and fortunately a nice FxCop Rule you can drop into your C:\Program Files\Microsoft Visual Studio 9.0\Team Tools\Static Analysis Tools\FxCop\Rules folder and you'll get a nice warning if you bump into one of these APIs. To be clear, they are not something you'll bump into in your regular life, but it's possible. Dan Moseley blogged about this from the MSBUILD point of view.

The situation you might get into would be that you'd develop on a Visual Studoi 2008 system with .NET 3.5 and targeted .NE T Framework 2.0 (but you have 2.0 SP1 with these new 2.0 methods), then you deploy to an older system that has only .NET 2.0 RTM (not Service Pack'ed). At this point you might get a MethodMissingException because that older system might not have the new method or property. Of course, you could just install the latest 2.0, but if you don't want to, then don't use the new methods/types/properties. Hence the optional FxCop Rule.


Krzysztof send me a text file with the list of new Properties and Methods and I wrote a little program to generate an HTML file that shows the additions (many are new overloads) and links them to MSDN help. I couldn't get to the exact method overloads so do make sure the parameters line up when you're reading the help.

NOTE: This is a different list from the original diff I did between 3.5 and 2.0. The original list was the differences between all of 2.0 and 3.5 and this list is JUST the BCL. Just the core.

Monday, 15 October 2007 14:12:46 (Pacific Standard Time, UTC-08:00)
Scott, the rule Krzysztof provided will only work with the integrated code analysis feature in Visual Studio and not with the stand-alone version of FxCop. I talk about this in my blog post here and also provide an updated version of the rule that will work in the stand-alone FxCop.
Tuesday, 16 October 2007 02:43:26 (Pacific Standard Time, UTC-08:00)

which is the code should I add to my app as first instructions (for example in Main method) to check if 2.0SP1 is installed and then alert the user and stop the application? So when I install an 2.0SP1 application on a machine without it, when I start application to test I know that i have to install it! And I hope that ClickOnce will be updated as well...

Thanks in advance,

Marco Parenzan
Marco parenzan
Tuesday, 16 October 2007 11:23:38 (Pacific Standard Time, UTC-08:00)
On this post I explain how to compare .NET 2.x and .NET 3.x bits with NDepend and how to explore the diff with the Code Query Language.

Actually, this works for all .NET assemblies except the .NET framework ones because the analysis code still relies on System.Reflection and System.Reflection cannot analyzes another version of itself. I cheated a bit to write the post by doing 2 analysis on 2 machines with a different version of the .NET framework and then compared them.

Before the end of the year, the analysis code will be refactored and will allow comparing Microsoft assemblies. For this, I'll use the great Mono.Cecil framework.
Friday, 26 October 2007 04:47:20 (Pacific Standard Time, UTC-08:00)
Please, is there a list of "red bits" in .NET Framework 3.0?

I am compiling the following code in Visual Studio 2008 beta 2 with target framework version set to 3.0
ICollectionView view = CollectionViewSource.GetDefaultView(collection);

I am getting an "unsupported" exception when I run the program with non-sp1 .net 3.0 installed. (once I install and uninstall .NET 3.5, the problem is fixed). I am guessing this is the same problem you have described here, but I can't find a list of changes in .net 3.0 sp1 anywhere
thanks for any ideas

Jaroslav Klíma
Tuesday, 30 October 2007 01:06:51 (Pacific Standard Time, UTC-08:00)
Jaroslav - I'm working on getting these for you.
Monday, 05 November 2007 00:38:09 (Pacific Standard Time, UTC-08:00)
Thanks a lot, Scott.
To anybody who might see the same behavior I do: Apparently, any view, default or not, for a collection of type Dictionary<a,b>.ValueCollection is not able to do sorting or grouping without SP1 for .NET 3.0. Filtering works fine. This means that the red bits for .NET 3.0 apparently include sorting and grouping support for views of new types of collections.
Jaroslav Klíma
Comments are closed.



On this page...



<2008 April>


Google Ads