CodeBetter.Com
CodeBetter.Com
RSS 2.0 via Feedburner
           Do you Twitter? Follow us @CodeBetter

Patrick Smacchia [MVP C#]

.NET 3.5 SP1: Changes Overview

For the curious, here are some informations about the brand new .NET 3.5 SP1 changes, compared to .NET 3.5. These results were obtained with the assembly comparison feature of the tool NDepend

Summary:

# Assemblies    112
# Namespaces    919 to 935      (+16   +1.7%)
# Types    39 988 to 40 513      (+525   +1.3%)
# Methods    387 421 to 386 790      (-631   -0.2%)
# Fields    241 567 to 246 795      (+5 228   +2.2%)
# IL instructions    8 598 933 to 8 620 940      (+22 007   +0.3%)

 

1.393 new public methods:  

SELECT METHODS WHERE IsPublic AND WasAdded

 

79 new public types:  

SELECT TYPES WHERE IsPublic AND WasAdded

 

No public types removed (hopefully!)

SELECT TYPES WHERE IsPublic AND WasRemoved

 

14 non-public methods became public: 

SELECT METHODS WHERE IsPublic AND VisibilityWasChanged AND IsInNewerBuild

 

6.384 methods where code was changed

SELECT METHODS WHERE CodeWasChanged

 

2.485 types where code was changed

SELECT TYPES WHERE CodeWasChanged

 


 

The list of assemblies we consider is made of 112 assemblies

 

Here is a 9000x1200 poster where methods where code was changed are located in blue (we degraded the quality to have a 2MB image file instead of 13MB):

 

 

And here is a list of coupling update for assemblies:

  1. A blue cell means: {the X Assembly} is using {the Y assembly}.
  2. Weight of a blue cell means: W members (methods and fields) of the {the X Assembly} are used by {the Y assembly}.
  3. A green cell means: {the Y Assembly} is used by {the X assembly}.
  4. Weight of a green cell means: W methods of the {the Y Assembly} are using {the X assembly}.
  5. A black cell means: {the X Assembly} and {the Y assembly} are using each others.
  6. A red tick on a cell means: the coupling has been changed.
  7. A red tick with a plus on a cell means: the dependency has been created.
  8. A red tick with a minus on a cell means: the dependency has been removed.
  9. An assembly name underlined means that its code has been changed.

 

 



Comments

DotNetKicks.com said:

You've been kicked (a good thing) - Trackback from DotNetKicks.com

# August 13, 2008 2:08 PM

Jon Skeet: Coding Blog said:

I suspect this will be pretty widely advertised fairly quickly, but both Visual Studio 2008 SP1 and

# August 13, 2008 2:41 PM

Marc Chouteau said:

C'est vraiment excellent comme comparaison, merci Patrick, je suis etonné sur le nombre de methodes (-631) alors qu'il y a (+525) types supplémentaires. Est-ce à dire qu'ils utilisent de nouveaux patterns ;)

# August 13, 2008 3:15 PM

Patrick Smacchia said:

oui c'est vrai cela ne m'avait pas frappé mais tu as raison Marc,

cela dit, un type peut aussi etre une enulmeration ou uin delegué

# August 13, 2008 3:39 PM

CV said:

The matrix image looks like MS has succeeded at creating a glider gun for the Game Of Life.

en.wikipedia.org/.../Conway%27s_Game_of_Life

# August 13, 2008 4:31 PM

Eugenio Estrada said:

Thanks you for your reply.

It's very interesting... I wanna see the news on WPF, I read that it includes lots of performance improvements... Do you know something?

You can contact me on the 'eugenioestrada.es' mail acount 'mail'. (The mail account is new and i don't wanna fill it with spam, hehe)

Best wishes!

# August 13, 2008 5:02 PM

Kent's thoughts said:

<p>By now, I'm sure you've heard that Service Pack 1 is out for Visual Studio 2008<br />         and the .NET Framework 3.5. ...

# August 13, 2008 7:26 PM

Scott Hanselman's Computer Zen said:

# August 13, 2008 7:58 PM

Byron said:

You need to post that using DeepZoom

# August 13, 2008 8:12 PM

Readed By Wrocław NUG members said:

Folks were hassling me in the comments for not posting the picosecond that .NET 3.5 SP1 came out (or

# August 13, 2008 8:55 PM

ASPInsiders said:

Folks were hassling me in the comments for not posting the picosecond that .NET 3.5 SP1 came out (or,

# August 14, 2008 12:58 AM

Reflective Perspective - Chris Alcock » The Morning Brew #158 said:

Pingback from  Reflective Perspective - Chris Alcock  » The Morning Brew #158

# August 14, 2008 3:30 AM

IHateSpaghetti {code} said:

Well, Patrick used NDepened in order to check what were the actual changes in 3.5SP1 and came up with

# August 14, 2008 4:52 AM

Sambo said:

Well!

# August 14, 2008 6:22 AM

Christian said:

@Marc Chouteau + @Patrick Smacchia: Hvorfor skriver dere på fransk? Kan dere ikke Norsk?

# August 14, 2008 8:27 AM

Patrick Smacchia said:

Christian, jeg can snake Norsk in litten :o)

# August 14, 2008 9:08 AM

Dew Drop - August 14, 2008 | Alvin Ashcraft's Morning Dew said:

Pingback from  Dew Drop - August 14, 2008 | Alvin Ashcraft's Morning Dew

# August 14, 2008 9:40 AM

Ray Akkanson said:

I like to know more about WPF and ADO.net entity framework changes..

Ray Akkanson

# August 14, 2008 10:01 AM

Filip C said:

Did someone else his ListView disappear in the Toolbox after the installation of SP1?

screenshot: www.wazig.be/.../633543045261874187_ListView-Dissapeared.jpg

How to solve this?

# August 14, 2008 10:07 AM

riix said:

is possible to have an excel sheet of these changes instead of zipped html pages?  (for presentation to mgmt).  merci d'avance.

# August 14, 2008 10:27 AM

Patrick Smacchia said:

Riix, download results as excel sheet here:

codebetter.com/.../Result35SP1DeltaAsExcel.zip

NDepend can export results to HTML, XLS, XML and TXT

# August 14, 2008 12:08 PM

Victor Shamanovsky said:

the best keeps getting better, thanks Microsoft.

# August 14, 2008 1:10 PM

Logan said:

Don't "{the X Assembly} is using {the Y assembly}"

and "{the Y Assembly} is used by {the X assembly}"

mean the same thing? I think you flipped both the wording and the variables when you meant to only flip one.

# August 14, 2008 4:52 PM

Patrick Smacchia said:

Logan, you are right. What I meant is that the 'is using' scenario is handled by a blue cell and the 'is used by' by a green one. Meaning that the matrix is symmetric, each blue cell correspond to a black cell.

The advantage of doing so is that you can read that Wx members of the asm X are using Wy members of the asm Y, where Wx is the weight on the green cell and Wy the weight on the blue cell.

# August 14, 2008 7:36 PM

Jon Galloway said:

Have your Visual Studio Installation Media Handy I was prompted for the original installation media both

# August 15, 2008 4:45 AM

le .NET 3.5 Sp1 said:

Pingback from  le .NET 3.5 Sp1

# August 15, 2008 10:58 AM

Coder said:

It looks scary. There a lot more methods and a lot less information about the behavior of a method than there used to be in Win32.

Multiply the-not-so-well-defined-behaviors with 386,790 methods, what do you get?

# August 15, 2008 1:02 PM

Deepm said:

Filip: I was not able to reproduce this issue at our end. Could you email me more about the LIstview disappearing issue. My email is my name at microsoft.com

# August 16, 2008 7:42 PM

» .NET 3.5 SP1: Changes Overview said:

Pingback from  » .NET 3.5 SP1: Changes Overview

# August 16, 2008 8:31 PM

Weekly Links #14 | GrantPalin.com said:

Pingback from  Weekly Links #14 | GrantPalin.com

# August 17, 2008 8:20 PM

Ryan Van Slooten said:

It would be really cool if the graphic was a Silverlight control with interactive features such as lookup and search. DeepZoom would be decent, but it would be better if it was interactive.

# August 18, 2008 2:49 PM

Patrick Smacchia said:

Ryan, graphics are not silverlight but all the interactive features you want are available in the rich application VisualNDepend.

# August 18, 2008 3:39 PM

Marcos Dell Antonio » O que muda exatamente no .NET com o Service Pack 1? said:

Pingback from  Marcos Dell Antonio » O que muda exatamente no .NET com o Service Pack 1?

# August 18, 2008 11:25 PM

Mike said:

I second the DeepZoom idea. It is interactive enough for me.

# August 19, 2008 12:21 PM

Euforik said:

.NET 3.5 SP1: Changes Overview

# August 20, 2008 10:55 AM

John said:

Seems like some new assemblies are missing from the graph, like System.Data.Entity.dll

# August 21, 2008 3:20 PM

Patrick Smacchia [MVP C#] said:

My post .NET Framework 3.5 SP1: Changes Overview on analysis evolution, structure and quality of the

# August 26, 2008 1:01 PM

NHibernate 2.0: Changes Overview - taccato! trend tracker, cool hunting, new business ideas said:

Pingback from  NHibernate 2.0: Changes Overview - taccato! trend tracker, cool hunting, new business ideas

# August 26, 2008 1:14 PM

Community Blogs said:

My post .NET Framework 3.5 SP1: Changes Overview on analysis evolution, structure and quality of the

# August 26, 2008 1:45 PM

Andrei Rinea said:

There is something I do not understand :

# Types    39 988 to 40 513      (+525   +1.3%)

# Methods    387 421 to 386 790      (-631   -0.2%)

How did methods decrease when the number of classes increased? I mean it's not impossible but it is at least weird.

# August 27, 2008 5:10 AM

Nuno Filipe Godinho said:

   With the release of the new Service Pack 1 for the .NET Framework 3.5 several changes were

# August 27, 2008 7:38 PM

Nuno Filipe Godinho said:

   With the release of the new Service Pack 1 for the .NET Framework 3.5 several changes were

# August 27, 2008 7:39 PM

Nuno Filipe Godinho said:

# August 27, 2008 7:50 PM

Mirrored Blogs said:

My post .NET Framework 3.5 SP1: Changes Overview on analysis evolution, structure and quality of the

# September 5, 2008 12:42 AM

NHibernate 2.0: Changes Overview - taccato! trend tracker, cool hunting, new business ideas said:

Pingback from  NHibernate 2.0: Changes Overview - taccato! trend tracker, cool hunting, new business ideas

# September 5, 2008 8:28 AM

Alexandre Grenier said:

Andrei... that's naturally what should happen when you refactor.

Let's say you have 20 classes with a number of methods that do some similar work in different parts of different methods... refactoring, you take those bits and extract to methods, within the class...

On the next iteration, you realise these methods do the same work, for example the test cases are identical... you would naturally take all those methods and pull them to a specialized class. Or perhaps add an inheritence level... That's how you end up with more classes, less methods.

Also, with lambdas / anonymous methods, I can see a lot of smaller functions getting eliminated... Just like generics eliminated many type-specialized classes when .Net 2.0 came out.

I think it also ends up happenning because of how responsability is distributed across people and teams, but that's another story... but in my experience, the more people you have on a project, the more classes you end up with, and also some duplication, and then after deep code reviews, the classes usually stay, but the duplication is removed.

# September 5, 2008 11:18 AM

jb said:

I can't find anyone talking about what happens when you compile an app on a .net 3.5 service pack 1 machine and deploy it to a server that doesn't have sp1 installed? I support multiple apps and I want to upgrade to my local workstation & visual studio to sp1, but I don't know what will break on my non-sp1 servers.

What are the compatibility issues and is there a way to "target" 3.5 vs 3.5 sp1?

Thanks,

--jb

# September 15, 2008 11:24 AM

Kartones Blog said:

For this application review, I've chosen a proof of concept I built last year, a small dungeon generator

# September 27, 2008 5:36 AM

Steve Wright's Blog said:

In my other blogs entries I mention that I have been looking into building a Team Foundation Server Data

# September 30, 2008 11:12 AM

Leave a Comment

(required)  
(optional)
(required)  

Enter the numbers above:
Add

About Patrick Smacchia

Patrick Smacchia is a Visual C# MVP involved in software development for over 15 years. After graduating in mathematics and computer science, he has worked on software in a variety of fields including stock exchange, airline ticket reservation system as well as a satellite base station at Alcatel. He's currently a software consultant and trainer on .NET technologies as well as the lead developer of the tool NDepend which provides numerous metrics and caveats on any compiled .NET application. He is the author of Practical .NET2 and C#2, a .NET book conceived from real world experience with 647 compilable code listings. Check out Devlicio.us!

Our Sponsors

Proudly Partnered With